|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 v2 b2 u$ u+ \
void PSCInit(void). u, k6 t8 h( L
{
- j; y0 P7 Z m PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% J8 g) H) n8 B# ]: {6 C
}
9 r' w; W4 A: a0 m9 C8 T M, I" f2 a) `+ E3 ?' p
void GPIOBankPinMuxSet(void)
; v$ b, _6 V( {; d{
' _; h" Y# q5 P1 O, J6 U // DRDY ------------ GPIO6[14] -- 1116 Z/ R3 D' k0 Z7 C' i
// SPI1_CLK ------------ GPIO2[13] -- 46
3 N, w" @! q" F // SPI1_SOMI------------ GPIO2[11] -- 443 z7 S# _4 C, B
// SPI1_SIMO------------ GPIO2[10] -- 43. F0 i) ^/ q' o; N" F
// SPI1_CS2 ------------ GPIO1[0] -- 17/ A4 K1 W: [, A8 l2 J
// SPI1_CS3 ------------ GPIO1[1] -- 18
& C: y# [0 Y% Q3 @* N
1 i6 @% I* [6 ^9 q' q7 F5 @0 @& P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( W: _8 u/ M+ D* | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
* Q7 y0 ~' S: L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 V' y% C0 ]9 \( F' e& U
- _# [' Y( u9 y //DRDY! \ K6 V4 p% Y- y
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY7 @- g5 g" X- _ Q8 p' C* O6 }+ Z
// CS2,CS30 s7 @$ r E' V0 e" \
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ `: j& J1 f2 Z" ?, d4 n
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 O$ H) N o& D$ x7 o% G
//SIMO
0 n' }2 T0 k; j' X6 @ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO' e& {; I7 X- y3 X: D
//SOMI! G/ n% S2 ?; f) Z+ h
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI( k) ~ q9 _+ T( w; k* i6 m. D; c
//CLK
+ ^' m/ A, ?9 ?5 _ S" f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ N( ^( ?! L9 o5 e8 G' ~
5 [7 f0 `5 y# Q // LDAC3 c x6 N7 q9 t$ i
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 o& M) h0 d0 q* l# _' E
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' L {; {7 m- P3 h$ Q( m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 q' |, Z" k, q. A* { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& a& Y$ M$ b; b7 J" y9 E GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 |& g* F0 H9 ^3 k2 O1 ?' H* r# y
}* d. h3 R, ]: I3 @
% [8 h7 I" u: L2 a5 `int main(void)
( l) \( Y" m1 \1 d{
/ a4 `2 h% b) E: Y // 外设使能6 E6 _- R4 R- \# q
PSCInit();
5 Y. @. `% J+ _; k6 j- d8 ]6 O% Y1 W
4 D& j! y$ O# Q/ V' C. o
// 管脚复用配置
% |7 l" d. o/ V8 F GPIOBankPinMuxSet();+ U0 C$ D. T; d" _6 {# |
for(;;)
* G7 @: z3 l8 S- N' ^+ S {
$ }9 _# n7 n* ^ d' o$ ]" T& U SET_SCLK();//时钟正常输出
- X' @ h' g4 i9 t8 q# Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& U6 n4 Q# c7 C; e( t7 `2 q$ B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, B, Q" ^5 c6 P$ @ O# l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( ^( l; ?8 [* \' X0 x$ f6 h, h) S9 W) D P3 y# i9 `" i$ s
delay(20);
, _* o& {* M/ c9 R! e% l+ v0 S! Y- x CLR_SCLK();
7 d9 ~/ a; \ Q/ t1 L3 E# j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, [/ Y; S9 F2 P: S' y, [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 M( N& n. U% I. T5 |; [- k9 O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 f: e0 D) _) s) b7 H3 e/ ?1 j# z
delay(20);! l9 U% K' S1 c* L
}
# u! b6 s. B# A- |4 ?}$ d, P, F! B l; t" ^/ C: {+ P
|
|