|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: ]: X( t1 T' ^2 x
void PSCInit(void)# W- R/ q# q- {8 Q' E6 I' i6 Y
{
* x' y9 `6 C1 Z$ G( f4 T PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
9 z: T$ o% o$ t/ a% L$ y7 X! ]" h}
' S( |4 Y" _- _0 ?8 d$ g. Z1 d7 S }% |9 c- j
void GPIOBankPinMuxSet(void)
: Q# J% B% F: I) j. d( _) e{
7 z1 w d8 [1 z9 K) J // DRDY ------------ GPIO6[14] -- 1113 t+ }7 q7 l/ c4 `' }
// SPI1_CLK ------------ GPIO2[13] -- 461 ~, u6 A8 r0 U0 l8 I3 }- \! M
// SPI1_SOMI------------ GPIO2[11] -- 44
+ X1 n4 S% k# _" s3 v( ?* q) r. i! w // SPI1_SIMO------------ GPIO2[10] -- 43
/ R& ^; ^ a3 g q6 e5 J // SPI1_CS2 ------------ GPIO1[0] -- 17
$ A, P' ]0 w" D& i // SPI1_CS3 ------------ GPIO1[1] -- 18
# q1 _$ U. [$ v. |/ i) c1 f
* d* W; V6 N# }5 O$ d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 V& a7 |) p' z' } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 `2 m* B! J/ I5 T+ s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 M% _5 X F# J- h7 g" o5 V
3 E! C$ G/ \! I( P; _: ]0 b
//DRDY9 v& }5 X7 f- n8 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 y' _/ P$ x; M5 F+ \! ~1 d // CS2,CS3
/ I) }& U% U& i) J/ P, ` B GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 y2 D( S* u" S6 |
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 V& _+ R) Q0 g8 ]# S! }# H. [
//SIMO
& ?0 _- ^+ ^5 ] GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- Z! R" @ j; h7 T //SOMI% g* b b& L0 f
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 r+ J7 L( \! C- |
//CLK1 j3 K) [0 M1 n% ^/ I
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) K$ x! O& X& l8 x, i4 m
8 L' s' k# H1 C* e // LDAC
3 n( Y, C3 g# c$ L1 s- B GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ ]0 X9 y/ Z6 C; c" A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; V! Q, _5 L) U- E$ Y& p7 p- U
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% J+ V1 X. ]7 A5 [3 @" f/ e GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 z, F( R) {) O) O. D" P5 T$ T2 f" l* S GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 l( Y) e% s( V- U% I" z6 `}( P! O# s+ o. C8 U' |/ m) a
: T4 u5 V& J& R, Q* c
int main(void)
: r/ g. i5 M) N5 {6 M3 j5 n1 Q{
1 {1 k$ M; f0 U i // 外设使能. S0 ~. O) S, B9 C
PSCInit();# y8 K! q& s" c' e8 f
4 b+ ^& K* t F% }
+ a) D0 F4 M2 z5 _9 f // 管脚复用配置7 r( j3 q; {6 u9 G
GPIOBankPinMuxSet();
5 j6 o( K8 h: }4 s7 ?( } for(;;)8 o$ O$ D" V, d: U
{
# R0 B- Y1 Q9 v: @% d; V SET_SCLK();//时钟正常输出
: H5 J7 R0 ], B: Q2 W6 Y% g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 I" |' d* W" U9 t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: F* \: V& {1 v c0 E$ T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. [1 d3 ]' r" x8 U$ d6 Z7 p, X6 Q. z& c4 @0 B% H3 c- i
delay(20);8 }; n! ~$ ]9 K+ U
CLR_SCLK();
: m% C3 X: B: z0 c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; v0 ?# b4 p3 l8 K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 o6 X0 y* ~! a# I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 r* |8 \, m6 c9 B, {- }& T5 c
delay(20);1 ?# V9 Q( a% N( g: n7 o/ I$ M
}8 O0 c& Z! Q+ H* s
} o1 [1 E& W5 I) R
|
|