|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
) S0 N& g! ]# r( g! q. t4 fvoid PSCInit(void)
( g) T# w/ J8 P* v8 ]) [. H) x0 p) s{7 i- D' S; o; u) c1 f$ ]$ G3 @
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 v" \, B8 M# y. o
}0 h( J, X! }, a$ a
( Q; d5 W: P- K4 n- ]" [$ Z
void GPIOBankPinMuxSet(void)
" o6 J c' W6 ]# R{9 K% Q5 ]: [) Z5 \! h
// DRDY ------------ GPIO6[14] -- 111
+ h! m/ N/ b. |" e, `" A // SPI1_CLK ------------ GPIO2[13] -- 46. L- o$ C+ }7 ?7 Y% Y* G
// SPI1_SOMI------------ GPIO2[11] -- 44. m* D1 ~6 P8 D* q0 d" f$ ?1 S
// SPI1_SIMO------------ GPIO2[10] -- 43
* f. h' ^1 Y* [ // SPI1_CS2 ------------ GPIO1[0] -- 17% {9 v5 p, M( [$ t# Y$ a
// SPI1_CS3 ------------ GPIO1[1] -- 187 J0 {# f8 N4 m m+ W; ?* _) v, v1 O
# c+ \- y7 \6 Y% M
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 k. J5 c. f7 v+ \7 Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
' k( I0 \7 y: T3 N6 {( G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
. W: p0 Q$ e0 n* y% e! Y. w
4 y: E8 S( U0 c8 V //DRDY" P8 i( q2 _8 \ h
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* W! e' |, {" }
// CS2,CS3( l7 V% w1 E* N& O' [+ d. X
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2. d" x+ E- F' v" s3 U6 S
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
n, Z; s( K, m" N1 v! D6 x% d //SIMO. ]) _) e/ s w" f' m5 T5 c+ g
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
9 ]* V; C- r8 X/ @" \4 v C4 n //SOMI
{! |, q6 ^% S+ U3 U. N GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. |0 L1 S8 p& Z7 w: _/ ^' K$ Z2 Q% K: p
//CLK" d+ y: E5 _/ G# ]3 d2 P
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 A5 ~1 y+ _6 w+ m& z
1 k( C+ [! z. y H% R, M // LDAC% m ?0 @- a, q6 ?" g% G. D, e
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK5 Q& G# j2 ]9 U7 C! b: |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- a% k: ^' W" p4 K- n5 I* g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 Q5 p: f% m- S$ D% g8 h5 e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3% C i' u: e1 @& `
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ S+ ?& p* t# i* A7 T" C0 ?+ ~
}
z J3 h1 y$ e! {# o: T0 r- A' p2 A. V2 N ^7 P( U! d1 G
int main(void)) M/ p* C% u* s2 Y5 H+ t
{
( v% |: O B# ~- n! l5 Q# M- Q // 外设使能4 F& ^0 L# P7 l2 H: O# o% I/ W
PSCInit();
, z% `1 I1 r- T& ], c9 y# w# d1 p0 p5 f" Q$ I3 ^
& P! G; q% g5 W! P+ w, `) d& u
// 管脚复用配置
. h; Z/ }% V% d) U) O4 K/ v" S0 x GPIOBankPinMuxSet();
: v* q/ Y$ D. f! R8 k. v2 T8 M for(;;)$ U# j& w9 ^1 W) O. [: ~' \
{
; G# Y ]7 o" j$ ?$ \ SET_SCLK();//时钟正常输出8 k, `" A9 ^$ T' e6 @/ f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: p+ a w9 L9 ^7 p% O) { \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 F& m# F4 o; P GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ J' W2 _" H3 ?4 `, w
& Y$ \; e3 ]5 }/ y+ y5 j7 r
delay(20);3 _5 u5 s- h. T; F
CLR_SCLK();2 {0 d, \/ [% G# m$ P
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
" M: i/ l) q- b7 t/ o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
* n: `+ ^. M, _3 i. X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* N; s0 F5 |, H delay(20);$ C" T1 ?8 @" ?' [0 P k
}. t: t+ |0 C: O
}
, t Q& [& u2 ?& `7 }$ F& t+ F |
|