|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; }' h3 p# C( N( J1 _+ w, Hvoid PSCInit(void)
2 Z. l0 f8 b+ ]! A W; r{4 k8 `! Q* R8 O2 ?/ i
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 `, P& n8 L1 |* q0 A}/ F4 M# b& M& C# L
8 f- ?2 ]# c" } s5 C3 k
void GPIOBankPinMuxSet(void)4 x$ S. j7 o! S% x: E& t6 O& w
{, Z" O: u4 x" u1 q: F9 u
// DRDY ------------ GPIO6[14] -- 1113 Z( \5 ?- C7 m" X1 \
// SPI1_CLK ------------ GPIO2[13] -- 464 Z$ [& S& K. E) g o3 o
// SPI1_SOMI------------ GPIO2[11] -- 44
' M# j) d8 Y f // SPI1_SIMO------------ GPIO2[10] -- 437 `9 C5 g- O$ F8 `
// SPI1_CS2 ------------ GPIO1[0] -- 17
) L; [( w# @8 t- i2 L8 L // SPI1_CS3 ------------ GPIO1[1] -- 182 D3 E' y1 O+ i# C7 G @! w
3 T' L- p1 h. T/ K: a8 _ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. L; d. c H- \* y. I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% {4 l: |6 h$ X0 e1 N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& @6 W7 X1 e! p1 c l1 T; e0 _# @
9 X" c; b- ~ E G, [7 W( R
//DRDY
5 @2 P. n2 \# q$ [ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 K$ M! S. O1 r5 ~' c' d; |
// CS2,CS36 r6 `5 _6 {$ m: @1 R6 }# \
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ x l$ r: a' C8 v% J" t5 x6 F" Y* ] GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; k o/ `: H( P1 ~1 K Q
//SIMO
0 @6 A/ ]7 I; j% ? GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( K3 v* q6 o) C) W" u
//SOMI# z: ~' D% F5 n2 t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ l' m4 c* r6 n$ L, [! t
//CLK
* o7 E8 _7 B# P GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ M" p6 P7 s8 }% j1 L, {1 Q0 Z8 g$ W7 O/ [
// LDAC
1 Y4 P# [! j2 c# Z8 K% F GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! D. L# I3 o& F% T0 z% g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# r1 G, ?; W+ E% ~8 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 \9 K- o! U3 x: d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 t7 L6 y7 q2 x( [2 X3 m GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* j: q, Z% p2 ^1 q& w}" I7 K4 k! v9 ?7 F* n1 |, D
% c; q9 ^" x7 t$ Y- x2 `
int main(void)" D$ X9 [/ N+ |$ I# ?: z* J& O7 A
{
0 F4 {- I, p7 p5 M* x9 h // 外设使能, s, w' F2 u! D+ a- u; ?
PSCInit();
2 o2 X% B) s ?( I8 Z0 C# P. I" N2 B/ }$ o3 O
: Y. F L- Y1 { // 管脚复用配置
2 d7 b6 q$ D0 J0 c8 | GPIOBankPinMuxSet();
9 O" X6 |% ?# o# ~1 B for(;;)- |/ y( O4 K6 d0 y& i2 m$ d
{& Y8 ]5 N3 _: S- t) p v/ @: ^% S
SET_SCLK();//时钟正常输出' @. J# A; P- D0 O+ s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& ]" v# Y$ ?! ]; E
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 s; t7 K! w1 F8 I2 p' J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 }! O9 v" _+ ?6 X
' t& l" T& {" s) y8 o8 I) e
delay(20);$ D3 ?% [/ e E! k/ w# g
CLR_SCLK();8 @1 c6 C0 W) M1 _9 f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, h( G! ~, E: c. k4 M# {" n( ~9 l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
; D9 i; r2 {. E8 t4 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 D1 ]5 @0 a: C+ f: t; j$ E$ [
delay(20);( L; [/ D7 E* Q9 y Q, c" B# l* @& x2 K
}
4 Q# J8 [4 o; V6 z}$ S. \- c M6 t6 o
|
|