|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; _" w" A+ U; x' U( O( vvoid PSCInit(void)
5 z' y6 b9 j: U- x, f- o' E{
4 H4 ^0 `4 C7 G4 w PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 K2 i' V6 F$ a7 g0 c& ^/ Q
}
# }- u. w9 Y, r4 X) e5 t2 j8 D7 G, d4 k' ]( X
void GPIOBankPinMuxSet(void)
) V4 E2 }! c6 ^! D{, O( w0 X1 ]$ S: ~3 H( ^7 q6 {' f
// DRDY ------------ GPIO6[14] -- 1114 |7 ?6 D# H3 e' _' [3 B) E
// SPI1_CLK ------------ GPIO2[13] -- 46+ Q$ U4 c& J& I
// SPI1_SOMI------------ GPIO2[11] -- 44: d/ e" l, Q; o, s+ t
// SPI1_SIMO------------ GPIO2[10] -- 43" I, D$ o& [6 f4 a) \: w5 `
// SPI1_CS2 ------------ GPIO1[0] -- 17) t/ b1 j) I" W- y& P; b* X6 J
// SPI1_CS3 ------------ GPIO1[1] -- 18
5 y( x' C. q+ W# ]! ^: n1 `6 e
3 A3 E7 \% p+ B9 R1 m4 {5 y$ w; p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, h3 m( x/ O! V9 u, V3 O9 C) A& w
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);+ @' J$ X# i# g/ Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ b# @" Q! {8 k7 p) v8 X3 o6 p
4 ~7 J c& ?/ b5 |1 U- v
//DRDY- g$ W# ~+ A; T5 m* a$ I+ r' J6 |
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ M4 R9 c* x: I5 t% j! L( |9 F
// CS2,CS3
6 T- [9 W9 i6 I2 u GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 `- m' w C0 b7 {" c
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 D! s6 H) K1 U2 N8 c | //SIMO& r& T2 j5 q/ k
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ O1 h$ {" T' Z2 H/ e* X# B //SOMI( }) t& b1 T; r6 x: }+ X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
0 K9 r/ f. ~+ q0 ] //CLK: I# S7 @ \' L0 E3 \! r
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' g5 g3 k# Z k7 k4 F* W
$ D7 y [% v, K7 O) S% M8 I // LDAC( v1 `8 f% l, A' Q$ Y" Z8 z& E3 B8 R
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" k1 F5 ]8 c( a. `; v: z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. W- a' z* l6 N$ D0 a0 e. D9 O3 G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ ?% f# y- ^8 _8 e- c4 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. w% Q- Z; ?$ p( e1 H) b5 u GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% Q! V1 V4 F; h" J3 R* `! K9 E- T}" Y8 b( t# Q9 W" N: H/ s- K6 q. V5 q, Q
, f0 _( f1 e" e1 V4 dint main(void)
, }: {9 A' F" v6 U! s$ s% l{# |& h+ k( _% x- E! w4 V( K5 Y
// 外设使能
, s$ s) S+ V/ X w$ d5 y9 v( d. T PSCInit();& ?' T" C2 W, X
, L) U( m% ?. o* _* d3 i
3 D, m& ~- e' _7 k0 K$ B0 ]
// 管脚复用配置
& C. R. _6 l4 H7 I0 d+ p GPIOBankPinMuxSet();
/ H1 v }3 M; H3 B! V/ Y for(;;)
2 E( N' h2 U. u' d7 @7 z6 x {
+ P/ c6 Q/ ?" R5 ^3 ?0 E1 A- i SET_SCLK();//时钟正常输出9 e, g6 r3 b/ `: `# q1 K. U6 N8 P% v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 n# ^9 Z/ d7 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ X" L: k$ G& a1 n! F7 H% z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 Z; Q/ q% b( `. s; [$ h# T- A/ n3 _: @
delay(20);% Y3 K @0 f9 a/ P8 K( L" f
CLR_SCLK();
7 P. {6 t# w% ]" B GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 C* U7 g7 I+ w: l; I+ k8 u( c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
/ `; T; @2 L: m7 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% A- ^0 C" H4 Z! s* b( ^ delay(20);
- S0 b" u. j# d8 { }
+ o4 @5 Y7 k$ m8 \# Y5 x+ } ]}
2 z' `8 ]% R8 J! q% W |
|