|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ w& i* x% |& X4 N/ Z
void PSCInit(void)
0 o% S6 w4 v6 U. R S2 O( J2 d{' O O' a" Q/ w* Y1 @: J
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 Y; J/ F V( ]- h}
2 R8 S. L* S+ s$ {$ r: \4 N* _6 m: o, r. J: l2 s
void GPIOBankPinMuxSet(void)8 Y' ^" w* u9 s& _
{
& k# A, i* e m" K: ^5 M // DRDY ------------ GPIO6[14] -- 1114 W p1 }3 ^# z
// SPI1_CLK ------------ GPIO2[13] -- 466 q7 H$ h* B% d: G) H1 c5 x; R
// SPI1_SOMI------------ GPIO2[11] -- 445 ?( j' \7 H6 E7 ^0 R* ]) V
// SPI1_SIMO------------ GPIO2[10] -- 43
/ [$ w$ P" u* W6 G$ g // SPI1_CS2 ------------ GPIO1[0] -- 17" D9 N% W2 I! W' _
// SPI1_CS3 ------------ GPIO1[1] -- 18( X# c5 _4 S" ]
( G9 N8 A/ D( R- ?) n) ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. _/ u+ U9 O/ d q6 d: L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ D) k9 t- u; m& x
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
! J! D( U! W, `$ o
3 Q1 P+ a% |% w' C2 |: G6 h1 v //DRDY
4 N0 V6 B0 L5 y GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# b2 x8 k' L1 @0 M& D
// CS2,CS3$ L4 ^$ p9 R$ X* U1 r
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
9 Z3 m. V/ r+ ~7 e8 ^8 N& J GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: b! g" Q9 _7 D. M5 @0 a* u, R //SIMO
- i, o6 h$ J" S! d% n) K GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 a) F. ?% _! i //SOMI
H% i$ G, y: A( V) h GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* v7 \# ^; Q4 k8 x //CLK
: M, d& |1 M" S a# B* o GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK J. A/ v E1 R5 l
: k8 V& u7 r- I
// LDAC
% Z/ L+ ~6 o" ]4 m% ^ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: ]7 n0 w8 O" C P" X& w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 n7 G% B( U! S3 s9 @ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" M3 v. J* w$ x& a: s f. i4 E" d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; B8 o) q/ Q2 {2 L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 _+ _' h# T6 f
}6 v. }* F+ z5 _; ^: X9 b
1 {6 O' ?& I- tint main(void)
) K( F- N/ a# s; y$ m{
- ?" ^" [+ f' E Y* f% o" V // 外设使能2 H$ v' d+ d* N
PSCInit();
; S; j% a( P5 E1 V1 g/ h) ?8 w% b' V! w' J7 u0 N
, X1 I9 {' P8 u2 d
// 管脚复用配置9 D7 K5 \; L* g8 g
GPIOBankPinMuxSet();
! s& `3 o; ]4 ] for(;;)* R' l, N) X) }$ |9 u# _
{$ M; e! |$ |/ s! b$ @) ~9 i
SET_SCLK();//时钟正常输出0 a J+ D- G# n5 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 p, d9 X* O! E! e3 s* s4 x+ Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 d$ r) J% b% G" _, Y" [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# V- s/ v' }; o; y9 p3 A2 l5 P) s7 O
delay(20);1 F+ k+ q: m- K# y" _ |; N, j
CLR_SCLK();$ |: z y5 V" _8 `9 q( a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' ~! h; N0 t* p# F0 A k) ?# r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- X* J7 T0 i. \, o' X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% G% _, [! |( `! V delay(20);) [% w+ Q& F) g* \
}
# r( Q t6 O! M' O2 Y}; C# H q* a8 n
|
|