|
|
使用下面的例子代码,不能使SIMO和CS为低电平: l) |5 T0 q, a* \* K+ E# T
void PSCInit(void)
+ M" f( e0 r3 N- \{
$ q0 z! \9 Z' h2 X$ C0 x2 _ G PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 M" C/ M1 v# a) w4 k0 k- m}
. F( x7 \ H+ @* W" a
1 G9 V8 {( {4 D1 Evoid GPIOBankPinMuxSet(void)% C: W+ l6 u# c. I" }, k& J+ G
{8 ?, Q2 Y% x( a5 c/ H& T: m9 ]
// DRDY ------------ GPIO6[14] -- 1112 }8 Z; j9 L" E
// SPI1_CLK ------------ GPIO2[13] -- 46
+ P9 c1 a: T5 n // SPI1_SOMI------------ GPIO2[11] -- 44
7 t. q, c" s( D1 ~ // SPI1_SIMO------------ GPIO2[10] -- 43: o" \) E6 R( p" R" `1 x
// SPI1_CS2 ------------ GPIO1[0] -- 17$ U& N k5 {0 Y* F2 R
// SPI1_CS3 ------------ GPIO1[1] -- 18
; Z" Z7 j% U+ d9 F4 G, p! J, Z$ j7 {6 z3 ^8 t; d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ w3 r4 \7 C! R3 k/ ?% d; X7 ?; Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 ]. Z: {3 W8 W1 S) V5 y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' C2 e4 v+ l4 A' p2 S
' A7 X6 q- } C //DRDY
* e; s; W( R' B) D! K GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 T8 S- j$ X; [; F; n8 U
// CS2,CS3/ ], a. ~ z% T$ W
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# ]' H, l4 |7 |4 w
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 ~+ \. D, G- E. s //SIMO6 l5 A' U/ l$ o' t% K5 O% F
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ t* `0 b6 d( }$ N" n+ M$ O4 L$ R //SOMI' x; l( q$ S$ ?' I+ J( M
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ I7 p4 d5 q1 k! r! _ //CLK: C6 N. I! D* f4 L8 t" o S
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: ]* l4 b2 k& |( C, F7 m6 d! n/ c
0 Q% x' ^9 n4 [& e. R // LDAC) H4 A U8 Z( Q9 I
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK5 [/ T8 z6 L6 b2 i2 K' @4 r5 E
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: a* v( f3 l; c4 a$ w+ x' [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: }* q' ^) C( u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
% i: S4 N! ?* y6 p: { GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 p) `; k- ~. J7 e3 ?* X: `
}: \6 H% v0 D9 T8 B3 C
8 n/ z" i ?. E; A8 x' x) z
int main(void)2 b/ \2 |/ o# m% U8 T
{( F# c t7 T+ U9 ~. V1 x
// 外设使能, Z9 U" ~+ L4 `! Y3 i9 k/ Z
PSCInit();$ F. I6 C4 J- d* W
8 b/ G# @5 E9 e+ e0 y
7 s$ m! r- v1 @8 f4 F
// 管脚复用配置
$ x7 T2 [+ i) D& w GPIOBankPinMuxSet();
3 d: Z; l! ~0 w/ w: ? for(;;)5 C1 l- L8 m, Q. f6 d$ O1 s
{$ G% A8 m1 K! H+ Q$ J
SET_SCLK();//时钟正常输出; G- y% a4 r U7 d! y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 \7 H4 z8 T2 n& [* k
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: }# W$ a* z$ Y T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 x+ h2 G' r9 @* U$ A$ x$ e) |1 s
delay(20);% N8 B3 W6 E/ C) \9 q& v
CLR_SCLK();- P6 X+ W7 k2 f" R5 N& r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 r5 b4 w% d8 O# q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 ~& x3 c, g H+ l; l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 x! I; U3 f8 m) {0 |/ d5 V
delay(20);
3 @/ K( I3 J) Y+ M1 u: B8 u1 D } y: e& p" T# @1 \
}3 K- H1 A9 q& h9 g, j2 [
|
|