|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 }- Q9 R5 y( \+ Cvoid PSCInit(void)
# P, a U) M7 Y6 u{
, G3 z- P7 z8 ^" \% w PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 Y: J" r7 p; \- V1 z& U
}: L+ M1 _" n6 A4 L: N* {
0 C4 a* d0 s; @5 J& n1 H* u
void GPIOBankPinMuxSet(void)
# c% D2 L5 I! `0 p8 o{
' H* E% M/ j0 @6 E0 z3 A // DRDY ------------ GPIO6[14] -- 111
- m% v6 B8 P2 H6 ?, [/ h! _ // SPI1_CLK ------------ GPIO2[13] -- 46! v* v# Z+ W4 x% c$ ^- h/ ^0 _& G
// SPI1_SOMI------------ GPIO2[11] -- 44
4 Z/ {& H0 o+ ?5 G // SPI1_SIMO------------ GPIO2[10] -- 43
$ n* S5 ~5 m3 d* l // SPI1_CS2 ------------ GPIO1[0] -- 17" r, N3 h- k+ w# v' m5 ^) s
// SPI1_CS3 ------------ GPIO1[1] -- 18- ~) V6 X! i/ v/ m u
: H( Q6 _6 E; K' u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) J! e7 b& X( G& K& n/ P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 i3 t! f! T. f4 P" t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' t W* G- D t1 `4 _
) t$ G1 a# E6 a( R //DRDY
/ C" ^) u! \4 n0 x! B( u- J$ V" L+ L GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& M; ^2 N p& D% C' Y // CS2,CS3
8 ^+ @5 ?2 I1 u% b GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 o9 }& X, l7 U, G GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 o7 a, C! h( e5 f/ V" J' ]( X
//SIMO
4 B. M, b/ k5 f! F: z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 ^" \' P F" W9 f2 Y) {: J
//SOMI/ P5 m+ R. O. _
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
( j$ _: Y( j6 o% x" A% H //CLK
4 h& R8 V7 ]7 l! n+ k6 x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
p" m/ `( ]1 u4 E
! ~0 S5 a3 g- K // LDAC. c6 K$ R8 e1 `5 v5 I
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK; O# L0 i7 k6 p) b8 ?5 h+ a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, Z# b7 S9 I2 L- U @! O& Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 O8 @: E& C O( x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* l& {, O8 v, ]$ T" J% { GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 _# ~" R# \& i( F5 {
}4 u% ~! Y: q4 g8 d
% {/ X6 B6 u4 _int main(void)
( ?- M }7 y; q8 O6 Q{) ~; P' Y0 g" z9 F& z7 g
// 外设使能3 T3 A3 A! \, j; E+ i) B2 v8 }& l' n
PSCInit();0 `* s7 I7 {8 I6 s
+ n5 F( E4 w; ~1 n- T5 U / w7 ]7 h \! A: a
// 管脚复用配置
}8 ^ G; M/ e$ q' c& K- X GPIOBankPinMuxSet();* G2 Y- z+ t( n. ^6 @
for(;;)
/ a- T7 N$ y( d# l. I# E {
8 |: U4 x3 b. l, L( z) ] SET_SCLK();//时钟正常输出8 Y" o8 f. H+ t; E0 [( s0 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- w) p+ m k3 ]1 _6 k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 c3 g! @! a- U. E; O+ c2 [* v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
! X5 D+ V# T/ t ^0 Z/ k. j0 C6 g, P$ p
delay(20);1 F7 Z1 q# ]! c5 D4 t5 I4 a9 D
CLR_SCLK();
: h. Q" I( O( e1 G4 A' I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) b8 O+ X* O5 W5 E2 B j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 w. f6 P$ p$ E! X; J! k# s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 y6 q, T* Z7 |7 B! g delay(20);1 ]$ m; N2 r+ [8 M9 ]1 o1 `+ k
}
: e* k8 K7 X M `0 e* v c}& d! W4 }4 G! X5 \- B; z7 X
|
|