|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# c. t* c$ d i
void PSCInit(void)
& v# y1 b2 X/ R8 h$ `( g' y: ^( u8 k{/ W" r/ a& Y( d0 T7 N
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. M3 c I$ }5 `; @! U7 p8 h}! `" h+ l9 l ?- W
) k$ y) q: w( E/ R: }# ]3 a! M
void GPIOBankPinMuxSet(void)
1 Y; R1 {+ r8 y# J& p% I# i1 i1 m{8 ^- L& y6 ^/ S. Z' z
// DRDY ------------ GPIO6[14] -- 1113 a1 A, \% h4 N6 l
// SPI1_CLK ------------ GPIO2[13] -- 46
0 D$ g+ u6 L* j& B // SPI1_SOMI------------ GPIO2[11] -- 44" }+ r! ?3 a. B# G% P! q8 l; H
// SPI1_SIMO------------ GPIO2[10] -- 43
; g$ M3 j0 E( Q5 s // SPI1_CS2 ------------ GPIO1[0] -- 17
# S4 f( F/ u" h- F) t/ _0 t) T // SPI1_CS3 ------------ GPIO1[1] -- 18
+ G0 J" T& m6 E& {6 A, W5 z+ c
1 t. N) g7 R6 `$ I2 N7 H( s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 g& O3 X5 u7 @3 q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; T4 O9 c$ C e! u, P% |; s8 O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);; H3 E! ?$ p# }
. }! O) l, D4 Z4 k4 q2 i
//DRDY
" P8 v0 O, T. F+ G5 r3 a1 @' u GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
1 @. E/ R7 Q7 [. n // CS2,CS3
) ]4 b$ c5 K* w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
4 k3 \7 O- T# y3 q& X GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! ?( ]$ a+ c. G ]- q \# N
//SIMO
9 d9 a+ l# I+ w. P' ?2 I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
6 N& C& A7 v0 D6 T //SOMI; X2 [# R2 K, ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI6 R s( a- }- D7 R) }3 P; f
//CLK
# t4 u+ c' s7 h GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# M+ l C% J* N- W, i m1 H
. Y& f; u7 l& i2 m% o( `
// LDAC
0 Y& y7 X' y" r! | GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 G* G0 a8 H. _9 s% M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ F8 v( f9 l" Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 c" z5 R9 W% x" h+ n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 z7 ]/ ^, |: ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ `/ N; o( ]3 X5 r5 X
}
+ ^# V$ ? C9 D6 j. U* l+ Q' n1 |+ a6 `1 }9 Y$ u7 q+ x: ?. x& }4 r3 R
int main(void)5 G; F6 _9 z! n3 [/ U7 X+ ]
{
& d4 b1 _) R! Y# y. u) I6 N // 外设使能( Z8 u' B" O- H0 j
PSCInit();& `1 Q9 D5 X9 w. g, M
( X8 b' |2 R5 Z
1 n1 I/ p1 O2 @+ c3 _
// 管脚复用配置
. S2 a' O( n: U( a; d7 D GPIOBankPinMuxSet();
' o4 Z% D$ Z J for(;;)
7 z1 n# ^ O' e3 T+ j+ T; W! A {
9 ~. Q0 D7 L5 _, e SET_SCLK();//时钟正常输出0 e" r, N2 D0 b2 H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 R" f+ |3 Q( t: w& F# k' ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 t% M8 S7 M3 O5 w Y" `* a+ l$ }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" ^' j- G; H e; b5 x" c- Y$ c7 j
& {% B* h$ A- N+ o4 Q6 U
delay(20);5 o) [4 `( ~9 V$ q- H8 r
CLR_SCLK();
3 `# F2 y5 h( }7 Y1 L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* N/ N; H) h% d2 z0 Y% {; f: A; _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- P) {, g9 Y2 l( ?: [- J/ L& V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 @& ~1 i/ T! j" z7 G0 \ delay(20);
/ _8 N A* u) x; N }- d! ]) p2 s7 \! A; s
}
2 o8 l& N1 }4 W% @$ ]( [" w1 j |
|