|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 J- l+ ]: }1 F
void PSCInit(void)% Q8 P/ u# v6 e5 e0 s
{
) e l- L, s5 E$ p3 k- [% j7 j PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
' C! V7 M* u u. A$ n# G}. t# J2 N+ Y1 Q. K
6 C7 E4 s7 h5 D. [ R
void GPIOBankPinMuxSet(void)
( E8 k7 ]5 P \8 {' V{( ?2 ]4 ]. Q' b( t9 f$ h& c4 k% w
// DRDY ------------ GPIO6[14] -- 1110 K7 h6 B# [, \9 _7 {
// SPI1_CLK ------------ GPIO2[13] -- 46
! z' O% k& W; F6 F; s // SPI1_SOMI------------ GPIO2[11] -- 445 W. m& ?" F2 H _
// SPI1_SIMO------------ GPIO2[10] -- 43
/ x9 [' v) l+ e6 Y& \, ? // SPI1_CS2 ------------ GPIO1[0] -- 17" {. W5 d: [8 }
// SPI1_CS3 ------------ GPIO1[1] -- 18
7 H% r: q0 F7 i W: ^. c/ y' E( r' ^0 j& y* [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& s5 }7 c( G- @4 x, A3 i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
. `# v" q% n X1 w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" c, c* l6 W# o7 u! o( I
4 P* i4 x( o+ i( ~, F //DRDY
- [5 z4 n& P$ p% J+ C' L- B GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" H6 M. @: M) e+ o$ Q: l' d# a // CS2,CS3: V }0 u" {9 M4 U& G" L
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 o2 e4 j8 \( Q& G0 d
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 `! s: G5 p3 D) r
//SIMO# _, V/ `! D1 ^! p9 o
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
6 [3 |" X( y4 \# o3 s5 G6 { //SOMI
+ J) O/ N0 n8 @( i7 [ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, `. L3 w$ R( y+ h* s+ n( v7 j, N
//CLK9 j0 l4 J" U5 B7 l% l* r
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) }( N8 l/ [" @# W
+ g; s" Z g7 r8 z; u7 ?! Y- ] // LDAC e- g. U" |6 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) I+ I* {' L7 h5 x* u3 O2 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 a I( O! y- A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 W) S' l. |* W! V3 Y8 w y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ o8 x% b. X. I% y- g6 `5 }$ u5 @ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# s" G* c( `9 ^5 z
}
3 z* e; I' d- T( @- p; u" A% M2 _. W
int main(void) V% a* K2 C0 v" k: j; k2 D+ [# B) _5 o8 \
{/ `) K& B2 C% c
// 外设使能6 X9 J; U+ j+ y7 O' ^
PSCInit();+ H8 v' N! |) B, j
& n' x- C/ x+ F7 N0 S# f( Z* i * f) X: E5 |% a& k. _
// 管脚复用配置) Q& Q3 s' f4 b6 ]
GPIOBankPinMuxSet();8 z! {# _9 [: `
for(;;)+ B% s* g4 u3 O" M8 U: b/ g$ M
{; t% e) }5 `) V- B7 a; E) l
SET_SCLK();//时钟正常输出
. n* V3 L! @6 N: g; |/ d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 S. S! `& P) V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, m, \0 K8 m0 m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 r" B$ s5 m* h/ e( D' G3 _& m( W' Z7 \* i+ X4 J1 A
delay(20);
% N- q+ B$ T$ I. R CLR_SCLK();+ f: A) k( z5 q( j* w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 p) Z( ~ \6 ?5 b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 z5 ~6 x" p* I$ T! g9 F: ?1 e2 y% Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, }( U' K' ]2 V7 I. Q" L, I delay(20);4 L. \1 F& e7 a0 s# P7 l6 G
}
- i' C- [( B1 x& }2 ?}: Q8 R% c! L9 x1 y" B$ D3 C
|
|