|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 v9 G$ b3 Q. j1 t# g9 P" k, _void PSCInit(void)4 L( s2 f/ ?" G, D' h% h$ w& Q& K3 @
{, T1 k" j; U" K8 ]5 P
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- @) F: o2 q) ^}: c* q9 v/ _6 O- s: Y8 E
3 P( l. R; {6 `+ evoid GPIOBankPinMuxSet(void)5 h2 |# M" d( ^+ C1 ]% H
{
# b1 ^: X8 Y6 ^! m: x- q& m, D7 ~0 Z4 i // DRDY ------------ GPIO6[14] -- 111
; E5 s. e* `) B2 k( g // SPI1_CLK ------------ GPIO2[13] -- 46
9 h+ }. ^ B0 ~1 U // SPI1_SOMI------------ GPIO2[11] -- 442 p @6 x$ Y' `1 I/ c V# N2 ?: h
// SPI1_SIMO------------ GPIO2[10] -- 43
6 Y k1 D4 s2 F6 W // SPI1_CS2 ------------ GPIO1[0] -- 17
3 D* O( w" F/ T p8 q; Y // SPI1_CS3 ------------ GPIO1[1] -- 18! L6 U1 i9 F% j4 {; C0 C
. l% W& E& a: e: Y. b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# L1 W# N' v3 |4 W% ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# b. M" w5 B, r" U$ V c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' H ]4 `3 `( z- c
K. N/ b6 S4 e: i' b6 q5 x+ [0 p/ c //DRDY+ @" |/ Q0 I3 x# m1 m
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 X: s {4 @' m' S! F) a* J( U' c
// CS2,CS3: \3 w7 G5 k& _3 ^, H& v5 \
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
2 c2 e( ?: V+ Z, U, ]8 H" K GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( C1 U0 ?9 K% u4 S4 j
//SIMO1 O% Q* u. l# L
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. m) K7 [! s! m //SOMI
# Z* {9 [( Y/ y+ K- T8 W1 q GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 X# ?! i6 |8 o. z' K# V //CLK" e" b8 C% C$ V, K, H; }
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" p' X7 A/ ^5 r
1 K3 M# J! y# m M1 F0 z // LDAC8 x9 \) f5 E( Q* K9 E
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. p( R7 K) L6 d! O: }* Y# D2 ^5 W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( p8 g g2 d5 Y1 ?8 m; ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 @4 P* F X. T9 f ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 C0 l+ \+ T; R% r0 R! Q6 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
s& g; Y* \: |1 V8 ~/ p; u}
/ `) q# q4 ~8 W& j0 r, h! v3 q6 W
int main(void)/ p; R2 I9 R5 Y( r
{
( v* B+ g6 p; ^& P) k7 h // 外设使能
2 o, O; \% u5 `' C* G PSCInit();9 x) L; _( k y& t8 d& R1 A
: Z4 U0 `; g* Y$ ^2 C* s* F
& S: P" Y9 z/ [. e. R$ S# p // 管脚复用配置
- g% F" O$ r* {0 h1 v GPIOBankPinMuxSet();- X8 g) D9 I$ b$ M" @
for(;;)
4 v: M( R2 H$ B' q, D {
3 Q+ h9 S. W9 P" i SET_SCLK();//时钟正常输出
& P7 W. Z4 P4 S# w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ V2 F, E1 {" D$ E( B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
/ E) s1 L) g3 q! _9 f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: b- f9 F8 _+ F- _3 u; b
: h0 q4 x9 q& \5 p
delay(20);
1 A5 G+ W$ |2 f CLR_SCLK();$ G9 m; U1 j) X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3- `. Z. P" o; j% J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3) ^1 k# a# V( T, H/ [ P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 k3 f E2 E# }, ]$ [7 {7 L' |0 G delay(20);+ C$ D2 Q3 y( w9 K; K, d2 W
}
* O: i L, \7 S2 M& h; X}& e5 }1 j; F. f: H- Y6 b- u$ F# y
|
|