|
|
使用下面的例子代码,不能使SIMO和CS为低电平:- R/ j: B/ L ?2 p& \$ H: W- c
void PSCInit(void)
4 x, K8 q7 R/ a8 {, I+ S- A- Q{0 \) b3 c- S" }8 O
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 L4 Y4 @. Z. t) P+ g+ e8 |
}; k. F8 Q4 j: }& x8 n, R
/ k5 F# Y/ ?4 o: C7 N' Yvoid GPIOBankPinMuxSet(void). a& D( u) _- y5 {9 v
{$ N1 b& L) x% H9 y0 A2 J
// DRDY ------------ GPIO6[14] -- 111
( {5 h' `5 o1 B% \3 D3 `0 m // SPI1_CLK ------------ GPIO2[13] -- 466 H; B5 N! b& o6 k+ `+ w9 W I
// SPI1_SOMI------------ GPIO2[11] -- 44% t. [6 x, @- O' l4 g) X) Q
// SPI1_SIMO------------ GPIO2[10] -- 432 f. D% p9 e$ Q( O! s }, S) I
// SPI1_CS2 ------------ GPIO1[0] -- 17
. v1 o$ X% r9 ^. m; e, ~ // SPI1_CS3 ------------ GPIO1[1] -- 187 {: a5 k) I" q( \7 L( L" I" C5 s
N; L7 w2 M* Q4 f0 `! I* o6 X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; v' ?9 H# h, T. f |! H$ e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# U" b0 ]4 i8 M `* ~ a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);* h2 I: h- q4 s
2 q7 @/ R5 E3 `# P
//DRDY
; P/ H+ ~" `$ g3 ~" W; E GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
3 v _( |9 k; F% i" B" F // CS2,CS3
f5 }; M9 y8 } GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- _( l$ T+ W6 e2 T; |6 q, B
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& x7 g7 u0 @/ M# \2 X$ b7 V5 g5 n //SIMO2 [& q: _3 Q* S; w- R. q# v* C
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% W% n; z9 H, B7 o //SOMI+ R6 j+ b) A( B4 ^8 L0 \& z2 I8 {
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ i. n9 ?# ~) g) \2 j0 m! |: p' \" d //CLK( K: k% Z4 F: y8 S. b
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 O b/ x+ x; [5 r9 D
- u1 b5 {7 t4 m; G // LDAC" N( |' E! P( x# E! ]4 E
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% p, M( L' W8 _: Y; |5 \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: j1 E; F% T8 F9 Y1 v+ d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' a9 F6 `& t `( @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ @6 `0 @, i" \0 i7 S$ U7 I! B7 d
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
8 A, E+ v, S+ u, |+ m, p}
8 n+ z3 g# u1 Q- s4 h0 K6 @9 J% z+ {; e. K
int main(void)
, O0 L. s4 i: z5 F9 k{
6 y3 d; K1 m) T4 A9 ^! R& j* k // 外设使能; f2 @; }/ N! e
PSCInit();
- S# X: y! @4 b! e! l
7 v3 _7 |) Y; z* Z4 o$ }, \ , Y3 B& h9 R5 U. J8 L
// 管脚复用配置+ e# K+ J# h/ ~1 y5 H2 L' v
GPIOBankPinMuxSet();7 O4 }2 W- x0 o; b) y
for(;;)
+ j! @% V: J2 q( m {" W4 C: c0 [+ \' l" F
SET_SCLK();//时钟正常输出
% s" I+ u9 L4 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 \6 [+ e$ m$ Z# x0 e& A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& s4 ~; h# g" h GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 N8 g; Q! k1 C( g2 N. ^. P
: Z9 f ~, e1 s/ r4 X delay(20);
/ b0 y6 e: u4 m# {+ e x6 [( A4 I CLR_SCLK();# l3 [& G; P- e) c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* \$ W0 P2 M/ V9 R# M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: r% P; }1 Y9 G; `# ~# g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& j) z" [9 e* \6 ]
delay(20);# E& x8 i6 j# D( k! b
}' H" U+ B3 X- b! ^8 M
}
2 a8 ^7 M. B0 T w |
|