|
使用下面的例子代码,不能使SIMO和CS为低电平:
- ~8 X3 y$ \+ S- h! o$ s3 dvoid PSCInit(void)
5 l2 S* u1 n- Z {2 w{
( x! k. c4 @4 R# ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
: z: q1 R0 z& f1 K. a# r( N}
+ ]6 k6 f" S2 k( |- f. Y6 K. W) B% l$ o9 i2 L' n7 q
void GPIOBankPinMuxSet(void)
- b$ I6 o/ w" K R0 H{! H/ j# ^6 r7 R, O, S+ @$ ]
// DRDY ------------ GPIO6[14] -- 111. l8 l( X5 W5 G" G% p# b. L
// SPI1_CLK ------------ GPIO2[13] -- 46* M0 N) z5 k Y c7 ~
// SPI1_SOMI------------ GPIO2[11] -- 447 n* o+ H9 ~; ~8 p5 E* v
// SPI1_SIMO------------ GPIO2[10] -- 43: K8 K5 n% d! G8 t1 [
// SPI1_CS2 ------------ GPIO1[0] -- 17; K0 ~% S" c- K5 e+ F
// SPI1_CS3 ------------ GPIO1[1] -- 18
5 H. J* r8 u' h) I" x9 n; I. ~# k G( s( S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
9 V3 S a$ ~. Y) H/ U; M HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800); i$ ~( Y8 V! _! @! I7 O6 Y l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 J4 b# w/ M* M
& {: w5 o& Z/ v% Q; b) F$ D4 a- ]6 d& R //DRDY
4 A% r) Q8 l6 S _" i GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 W+ o1 n; _2 i! b, ` I
// CS2,CS3
% n* P f* O- s! l0 f) @ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# Q9 S' y7 K' R( I GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 O. M" n. {/ A4 a //SIMO
$ S& ]7 z) h" ^. r0 l6 F GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
7 x/ G/ x$ I) f* N7 ` //SOMI
+ R6 b& C4 T' ?! g ?7 I GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 g0 }/ Z5 m% u0 u$ r //CLK. I5 Q% {- n% q( c
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK: Y+ `+ C1 @- J" b9 l
( O6 ` M$ p) w. Y% k" H1 x( b
// LDAC
7 [/ B: h5 \3 ], k: I GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( Z& |! F+ Y x& I% Z; B% r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, ?4 T* R8 V3 b; z: x. r& Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 s' w, J) q0 f7 \7 O6 h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) u. u. f! d: U1 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 a* ]) u. h% {' w}
; W. W3 U/ t$ Z9 Q% ~! ?
/ o7 {% p6 G5 A0 i- Rint main(void)0 o+ L4 X4 v6 E5 x
{
. B% L. a/ u+ z: ~1 _4 q8 n; M3 I // 外设使能
1 p3 }" \1 S: Y- w* \ PSCInit();
; R3 M, Q/ J1 V5 E# o% \! u3 h0 j- k7 ~( G
7 Q8 y8 _* G1 w' E* `) H" h // 管脚复用配置
& _: ^( l1 L: _/ x: k; d GPIOBankPinMuxSet();
2 E( C( a6 y; f8 D& d for(;;)5 O2 e2 L4 U; z0 W
{
' m6 e8 p. X% d8 J! y SET_SCLK();//时钟正常输出$ j# L* p8 A& }, o! `' N. n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 Z! [; [2 ?+ l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' v& t1 q& l& W! _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 H+ r* }% T3 }2 N- F
& y3 [# H/ P3 p$ X: ? delay(20);
5 @# G& Z7 r6 B+ t$ B/ _ CLR_SCLK();
. f, h7 s; ^+ I% b$ E! F+ \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
- r0 D' H: b& e9 u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! g1 X/ l. u' d$ F; `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; S& `% J/ t9 D8 a5 L
delay(20);5 m% v, b0 u" m. a6 R$ n- H$ F
}5 d0 R7 Z- }+ ` G" Q
}
9 J' J' O$ ]2 C9 ?" ^ |
|