|
|
使用下面的例子代码,不能使SIMO和CS为低电平:( I' w% M2 B7 B7 ]6 [
void PSCInit(void)
' e$ u$ R9 J( V9 l& R{
+ M" T$ O G Z0 ?5 O+ z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" r6 t ?4 u6 _6 `}1 S: t+ R6 q) Q! k/ o" I0 ?0 f$ u* {
% Y: [. p. C4 Q: r2 Z$ G3 i
void GPIOBankPinMuxSet(void)' Q& |. z$ o& A
{2 @9 O# X# U4 Y1 }1 n \
// DRDY ------------ GPIO6[14] -- 111
2 }/ a O9 A+ r% m% |& a9 o // SPI1_CLK ------------ GPIO2[13] -- 46
7 W0 S9 ^9 a4 z( Q8 O; A6 q5 `4 Q // SPI1_SOMI------------ GPIO2[11] -- 44
, P% l* u# E* Y5 q // SPI1_SIMO------------ GPIO2[10] -- 43- @. U/ J1 ^+ |0 g* F
// SPI1_CS2 ------------ GPIO1[0] -- 17" I. P0 j1 }; U' R* |/ r( r
// SPI1_CS3 ------------ GPIO1[1] -- 180 ^! d3 P3 d; S
$ L- J2 q# W/ D( j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 f/ Q8 G- d& N( C7 T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% ~9 K9 Y3 d' w7 ?- Y" v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 f0 J6 S6 t" ^) M% h7 U
. @, r: b# J3 w- Q0 ~ //DRDY
# y2 l) b5 [- W! Z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( A4 }3 a1 ~" T( `" e* q) f2 t // CS2,CS3
3 _5 Y4 N6 v/ N& s" I- O2 I" |* q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: ~ t1 v. C2 M
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS36 ~' q/ ?6 U9 @6 t0 A' K
//SIMO8 i2 k' l! c! s7 g: i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 _- M$ t* r, Y" h" |
//SOMI
$ u$ c- ~: J# a% o, o( y4 G! x2 e3 i GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, ?# }( f; _- ]
//CLK/ Z, P7 B' n7 Z0 `
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
0 ~) p) g2 | t( E3 x
! d/ J$ G4 a# p' o/ ^: M // LDAC" J% w8 H" P8 _, {4 Z9 S. A$ F
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK [/ E: Y, C$ X6 {. `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& s$ g* U& Q6 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 D; f6 O- }: U) Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 {2 h w3 C+ J( M$ I( c% ^- p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 c7 v O! L- f$ f5 V}* C% V3 G }% i! g4 k
0 R7 W/ ?! S& U5 X: r
int main(void)
5 Q5 S* w! Z* O+ S& ]{9 Q) o) n' e8 {) q* T) E
// 外设使能( {: z3 s, d, ^% a. w
PSCInit();
1 A' C. N) r" |! b0 ]$ ?' |/ y$ O' J( }3 W0 m9 n. Z/ `5 G
9 P- O0 {$ u7 E* j- f // 管脚复用配置
0 K2 S, Q+ P7 l+ I! d/ a4 T0 u GPIOBankPinMuxSet();/ V. k9 E( R' C; ]/ v7 H! a
for(;;)5 J$ F6 p' X0 K
{
, m8 Q$ [9 ^* f# ]0 X" P SET_SCLK();//时钟正常输出
( \# ]7 |9 m! \. l8 L I2 P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; f8 n" U8 g( o9 V+ P* ?, D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) a8 w7 V5 P" D/ T5 B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" t% ?: p! o6 r7 u1 |! D$ }& J' q
4 }" |4 v" G& t+ M y5 ~6 H' \. s9 p delay(20);
- _4 i, t& C S+ h( P2 A' g CLR_SCLK();4 _, H9 B% U, S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 F3 p5 m |- z9 S Q+ l5 @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! @$ Q( g( Y: r* P$ W6 u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 v+ E. s- _ t1 T delay(20);7 A1 [1 t1 O, I# w
}9 ?% _5 l! P L
}
9 Y: e, m j" I. _ |
|