|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
5 Q3 o% k( I8 x* }9 Mvoid PSCInit(void)+ K+ x( E) @. `$ u, o' l1 |9 U
{
* v$ I6 i% o/ O3 B2 X PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 n1 k; A) N2 ~# T7 d# ]. T- L4 P( R! S}
" S; I4 B4 [% v1 }$ F% O+ D4 n/ z5 Z1 R( x. L
void GPIOBankPinMuxSet(void)% K, j$ X P! X# h6 ^
{$ x' v( o7 s! T
// DRDY ------------ GPIO6[14] -- 1116 t; v, Z! A9 ?4 A3 V. q
// SPI1_CLK ------------ GPIO2[13] -- 46
! W v! X; H& P& _# ]( T J& o // SPI1_SOMI------------ GPIO2[11] -- 44
* t- } v% i# {9 a) w0 G5 { // SPI1_SIMO------------ GPIO2[10] -- 43
/ K, x/ ?9 _0 S0 l: M // SPI1_CS2 ------------ GPIO1[0] -- 17. a: G: Z2 U6 v( r
// SPI1_CS3 ------------ GPIO1[1] -- 180 h$ o1 y: ]/ G7 ^2 B
3 W8 `' }( M) _/ h5 v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- z2 d5 o' N1 H* d" B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& v/ r# q: D! E2 p; g; @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 d" I+ Y' Z8 b9 F
9 {( W, k$ w& _ //DRDY
$ w/ e/ H! o3 p5 m GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! |! y+ J( B/ C0 l% L6 W1 h7 y // CS2,CS3; c' T* h0 ]1 `9 D& A3 E, ?
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% t( E3 p$ X7 b GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 u0 T8 Q5 w$ N2 K, } n //SIMO
8 l! o a, q0 b GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO+ c0 X1 `$ t" C- s) Y6 o
//SOMI, H& ]& R* R; D5 i- ?* \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI G4 g$ k6 Z9 S f' V3 v- Y
//CLK
3 A9 q, i6 y+ g: ]; ^( ?+ _2 W$ [ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, `3 X/ m& a* D$ g4 `
4 g# g2 x# ?4 `: A% v0 P // LDAC: n3 ?2 \- `6 S
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) Y$ z# O% h |! ^3 U6 V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% h' [ Q0 s8 T, g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% _) D; ? d& ?9 W2 t. ~2 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 u* B7 c' `7 g5 A# u! D; i GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
M7 D% c3 H! P7 h- E: Y}
* e4 o# v$ }3 W
6 c. ~9 i! ~4 M5 d0 w0 Rint main(void)3 K# Y' O( @ j% f) P, ?
{
8 i% x! A& ]& X% G% g // 外设使能
3 x/ [+ @8 ]1 e- T% I+ s6 ]4 x8 D PSCInit();, t8 |2 \/ Z( e
" c) G; \& b# X2 j0 q5 v
9 O" H6 w* Q: P2 `- T" Z2 m# a
// 管脚复用配置( M7 s1 \8 x0 R# m$ Z5 d
GPIOBankPinMuxSet();
% @" K% K1 J0 `6 M. Y for(;;)# o% H9 L1 L) W E: v
{: k# O9 l. g8 ~2 X4 U% [
SET_SCLK();//时钟正常输出0 f7 M+ E$ c A; G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 J9 q. k( G% c' q' U: B& W, K) Y1 }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3% p% \7 K c: m. }7 ~7 { I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 s3 l2 g; k4 N; m
5 R6 L0 A8 q, i9 e; t' f. @6 d delay(20);! L+ z1 @/ z" ~' F& }7 L7 `
CLR_SCLK();
# c# p+ \: m; \7 q8 F2 }' |! h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& j1 b; v4 e& z8 t, E5 r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
! Y. T# n' Z2 C6 r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ ~2 Z2 O! b8 r delay(20);
7 ^* B5 _3 q) _( d9 \3 [ }- o9 F4 Q' y. `: c
}
9 B: C" [& I( g. y( Z9 u |
|