|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: ?0 `: L7 {4 Xvoid PSCInit(void)
, Z0 _: k6 \: W% y" V" N+ t! y{
: A* A3 Y! z* u; c. V5 D PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- ^" n9 ^& o: C. t}# r3 l2 v4 `9 Y" f+ Y& a2 P8 Z
- a L& ^* K" J2 y+ Zvoid GPIOBankPinMuxSet(void)
3 Q. v8 ]: a+ a: S/ ~{% o7 F7 ]6 [/ {0 X3 u
// DRDY ------------ GPIO6[14] -- 111# q2 u! p- M" f7 R$ o# o
// SPI1_CLK ------------ GPIO2[13] -- 46& S" q2 K, C+ m' P) [0 z
// SPI1_SOMI------------ GPIO2[11] -- 44. a. j a7 a% Y/ f
// SPI1_SIMO------------ GPIO2[10] -- 43
! b( q/ S, O9 A+ q+ q( H2 d' ` // SPI1_CS2 ------------ GPIO1[0] -- 177 c8 B1 S! r: O
// SPI1_CS3 ------------ GPIO1[1] -- 18
- v, q- b) w5 _ d1 j5 t) Z' I
( |, m7 k5 N5 k' e/ w4 w9 ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
J! j6 V7 K; E# y4 A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);7 ~, a9 O. u! f9 R6 p$ a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 y6 c8 T7 @( ?' m6 X# x! ?: n! \* A' K6 _: N
//DRDY
8 R1 g, K4 h6 q! D% [9 N GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) Z9 T8 V- v7 V- a // CS2,CS3. @+ G: W3 c1 T+ b+ R$ q8 \
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
; N3 G1 |. l1 ~3 Z( w GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ u. |8 i+ ~1 ^! s1 [
//SIMO$ w' ?5 K% X& e5 ^5 e9 ~* E- P3 V3 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: l8 c0 H$ d! A4 q, b: T1 @9 T //SOMI+ b L3 d& M4 b/ ]
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 _5 V2 [' v9 ]; U% f
//CLK/ D7 [2 b3 l; Y! v; o* h+ i' l% D
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ ~& O0 R1 S* i% x: `/ u; ^
; y {/ ?7 O* n' F
// LDAC6 b; j0 _! J/ r' [1 z5 g& Z; H) G p; q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 Y9 B2 r0 @5 t0 B. Q7 d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 b/ s0 }% V9 Q& U7 s, \4 L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# d; g: B; d. O3 r% L- i$ n: a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" C2 q1 Y6 n1 I7 R4 i/ K! [: Y
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY& E7 [ v# ^7 k7 L
}& A" c6 w7 d9 N7 _. N# j2 \
- W8 ~- f' @( P* c
int main(void)- d+ d. V/ D! w B$ W( Z
{
" i+ W/ t& i; ]5 L // 外设使能0 X# X2 A6 D8 T9 x- [
PSCInit();
3 X0 S! Y" I1 J0 `0 @ z( D+ L7 ^5 |/ X$ P! O* m
( y: k3 t- n6 Q // 管脚复用配置. I( w! |) S6 h; l
GPIOBankPinMuxSet();
1 r3 b; z- {6 V; {7 ^ for(;;)
! n \5 j) I4 y# o1 d; d& D {( L5 K/ O! U4 l8 e _0 m
SET_SCLK();//时钟正常输出& Q2 K- X* U2 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) X7 K( T1 h/ `9 u7 N8 h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3" p$ J) a7 v& @* x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
+ w4 L* ?* Q: ?( a0 W! w G& G# `$ P) U2 P9 s& N2 [
delay(20);
. B1 Z( e, b0 v, H: K- Y) d CLR_SCLK();
+ v8 X/ p9 a/ I" V1 a, Y' v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 h8 t" N s+ [2 r$ E# j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
4 {; n" H E; B5 e- [/ f( w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 z2 }0 i7 }4 Y6 r" Q0 S delay(20);: U4 Y. o5 ]6 `$ }* k
}
0 K: @& X5 X) z2 v, a9 i. |* Q$ Y3 ^}4 J/ D6 e/ a. [' \- y- y% d! {
|
|