|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ w; H4 n' y( s0 g: M+ _$ l
void PSCInit(void)
8 n7 a$ `+ P1 Y$ ]4 Z& Q{
' c, A( J) `2 {; ] PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 s: i* a6 Z, L: d6 `+ k# J
}* L" A9 y. Q! v# i' h
/ C, N) M6 L0 q/ n% E! R
void GPIOBankPinMuxSet(void)
3 S; q+ N% W) B* g. w6 g0 P{# O0 g, \5 W% N) U k3 \4 t2 M
// DRDY ------------ GPIO6[14] -- 111# K( ^; n0 {4 a7 z& O& {& Q
// SPI1_CLK ------------ GPIO2[13] -- 46
- A' ^/ ~( C* c. R/ A; J // SPI1_SOMI------------ GPIO2[11] -- 44& }4 G9 n5 U5 h0 B& F$ ? w# E
// SPI1_SIMO------------ GPIO2[10] -- 43# y. L% n7 _( Y, s4 h6 B9 d4 w
// SPI1_CS2 ------------ GPIO1[0] -- 17, w+ r! K) q5 V
// SPI1_CS3 ------------ GPIO1[1] -- 18
+ o3 x* ] B- r: m3 N) Q/ t0 @; Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
7 n) n$ U, p- c0 W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ D; d* `+ v9 O5 c2 [, H# k6 M" D; s$ R- w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ _. G# a: ~0 g* ~- v* Q- R
8 {1 v ~$ V2 Y. Y$ K, Y& |# y% j
//DRDY/ G" U- \, u- B7 n I
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ c; [) O6 o( }1 ] // CS2,CS3* u v; }. B, I
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, a! F5 z# |( |, E5 U Z. @
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3: U: |+ E/ N' y+ u1 \) ?( E
//SIMO
q9 P- C4 O* m/ b GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
7 w Y+ \8 `1 g3 f1 l. T8 a //SOMI2 N. U5 k& p0 A
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% V- |( w2 C& A ]5 p, s6 ]5 j
//CLK3 p2 W* B( |" }' Z+ Z8 M
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; z8 c2 f9 ~- g& X/ a
( u9 x1 W6 X! I6 ~7 Z, K; ~
// LDAC! s* ]" `3 B/ b* t6 p9 W
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ j0 J/ w* p0 T ]1 g+ }9 k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, Q1 V! A* j. { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 ^/ `* c: P0 C2 ~9 p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& j1 w" F2 B% \7 J! J' H/ r GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' i7 f/ L! ~! C! G) [) O7 {( p}
3 C; i! E5 Y9 e6 t: b4 P: ]
; P8 Y; k& F% s2 r( e& ^3 I% fint main(void)
& Z; W( {) m" h4 H{
( ?/ w$ T) q+ R/ h // 外设使能( _& V$ c. G4 }; a- L4 e9 Q$ t
PSCInit();
" i/ W& h# W, K- U( Z: `6 @2 u3 t; z. Z/ J+ Q0 I% v
9 j% L9 K1 j6 F3 w! P: m& Y // 管脚复用配置: a2 T+ _( I- H8 J
GPIOBankPinMuxSet();; Y" ~3 P! D* H
for(;;)7 p0 z5 H7 M7 r+ f1 [3 w* @" B
{
4 w2 V' ]. f" @9 u& K SET_SCLK();//时钟正常输出5 e+ j" j; E* n5 p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( b; V5 l3 r4 ? Q5 i7 |9 b1 {" x# J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 ^6 U: ?+ p- x8 ^" {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) D6 {3 S# h+ O3 j
9 \4 W5 H* a# v delay(20);5 A* p- T. C: [1 w3 ]) m! A
CLR_SCLK();
3 |' B( S1 L7 s2 d$ |* Q6 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
- N. D: o' @0 D/ q# l, { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 E" c: \4 q% a6 p, \9 Y5 y' p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 N, }% \' \3 }. e) ^1 b' Z- w delay(20);
% @, ~1 t# f' t% z7 g. b: L }
2 Z2 q, h w8 g" U. {- r' m8 b}; w# V9 ^2 g( ?4 `* |: J3 n" d! D6 L
|
|