|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' Z; V) @ |' k' l
void PSCInit(void)5 b+ I: S4 V$ i
{7 g% z9 n9 s5 J
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. R" |9 c5 J* |1 A' h, D}
3 O* I7 t% a6 Y: W# Q* v* l8 D
& e, ^9 _$ t% h* ovoid GPIOBankPinMuxSet(void)
% X5 e$ B6 e& i9 E+ Y. q& R8 \{- k; V. j. ~4 c+ K6 _- `" ^! j+ @1 I
// DRDY ------------ GPIO6[14] -- 111
* P6 Q5 Q# H+ U' e& Q- v( `, f // SPI1_CLK ------------ GPIO2[13] -- 46
* g2 g2 {5 F+ b/ R! o& Q! ^: |$ }. T' Z5 { // SPI1_SOMI------------ GPIO2[11] -- 44
5 h0 O5 s l } // SPI1_SIMO------------ GPIO2[10] -- 43* ]8 q# C' x; P2 l, E+ k
// SPI1_CS2 ------------ GPIO1[0] -- 17$ r1 ~( _* D( O: }) `
// SPI1_CS3 ------------ GPIO1[1] -- 18/ I. z( e+ ~, d9 a5 N
U- b: i- j3 }: O' J7 B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);1 @+ p0 d4 [1 ?% Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 i. Y& h; j% T! p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( m: ~2 q7 K7 m' y+ _% Q9 h
O: k6 \" r t& B. @4 R# E //DRDY' y. c1 ?1 g0 I
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY t5 p# q5 T+ r$ v" Q; S2 z! M
// CS2,CS3
% P! i: ~5 c" E" z7 P1 Y, O+ e GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) H6 l4 t9 |6 z+ I- O4 J3 K GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 D v( o, I& ^- d
//SIMO
( H( f3 Y" F. a" t1 X, ? GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 ]4 N, c! _+ }/ D( X' o
//SOMI$ n+ X/ j! W1 ]$ ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ l# f3 {3 V0 Y b, ~5 M8 \
//CLK
# d* t# H7 o1 R1 O GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) v( h$ _( [' p+ r. w* T
) F0 [, j5 t `7 a5 l7 O // LDAC6 E+ M, {) f" @, U
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK8 X& v# i& ~1 h+ L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 h3 E, ^) j3 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. ~. t: V5 ~! P. M& [$ @% I- W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" o( F5 s& `% C1 Q' J6 u GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 G; p, [! x- y: n. g. ~
}4 V2 J, b! Z$ E- w) O8 ~3 b
4 t+ P* p$ N' W* t* i0 Dint main(void)# w6 g; b* j; p& C. j$ E# i: K! [
{" `5 u+ M6 I) [& J% t2 J8 ^
// 外设使能! E' M; f2 ?1 ?. \8 @
PSCInit();
! l; h% B, F3 N' h: M4 F% R2 A9 K% y! D+ w9 {
: v- C: q. v; _9 ?2 F // 管脚复用配置2 H, d' d- G: U9 ^, M ^/ x' z
GPIOBankPinMuxSet();
8 K1 C0 \) n1 M0 i1 Q6 ? for(;;)/ O: x8 f& A( G! Y: @4 e
{4 w% B* {0 u$ ]8 i P5 P& I
SET_SCLK();//时钟正常输出* H5 H& U1 T4 H0 c! t- |* I! U* C
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 l/ |2 W3 j1 P- m, X3 D: z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 J7 G8 ^( q2 n0 o+ K0 T' _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 @3 G$ y$ I$ Y% r
- f/ P) b+ N3 M( `# e/ W delay(20);1 U/ L6 I) q1 Q8 @8 |. H
CLR_SCLK();
+ O' `' U$ w: K0 c6 j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' p. o4 r# d7 i A) m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 t$ ^( G# P$ _8 R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 s8 a ]. d9 V- m
delay(20);' `0 ]% ~- p3 I
}! q& \: m. d0 ~4 z! h! z
}% N6 |% W$ p# h
|
|