|
|
使用下面的例子代码,不能使SIMO和CS为低电平:* c% Z: d U( p L) y
void PSCInit(void)) Y" _/ U$ ?2 d" n; F0 S
{
1 X6 w7 U! Q9 `) }1 B PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 q2 u' s3 l* t" {
}! \7 S b& t* [8 |$ F4 X; \
) L" Y; g" M& n. A1 |( hvoid GPIOBankPinMuxSet(void)2 S9 @: J" B" q) ~0 m* D
{, u. M2 j5 }% S7 E" s6 m/ t
// DRDY ------------ GPIO6[14] -- 1112 H, I) K7 f6 t3 Y7 w" W8 W
// SPI1_CLK ------------ GPIO2[13] -- 464 y, G3 i0 A4 I* {. Y
// SPI1_SOMI------------ GPIO2[11] -- 44
1 u ~6 L; {. \, d // SPI1_SIMO------------ GPIO2[10] -- 43
& X. F4 G9 G ` // SPI1_CS2 ------------ GPIO1[0] -- 17
9 \/ Y, P! E" r) i3 ` // SPI1_CS3 ------------ GPIO1[1] -- 18% X/ U( C* p+ S9 N
8 s6 R4 r" \* F8 |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. W% c) E" g% W- ~. B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( y0 c+ G* W4 p |4 o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 f2 O* _( v- v* \' U' V$ B2 M6 N, f3 U5 z* h, Y
//DRDY% |6 B+ X- Z4 |# u
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& L4 h7 ? j3 s3 S. ]
// CS2,CS3
}4 g1 Y! K: I* d1 v) ]# G GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
1 z9 k& S7 I/ B2 t N GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' y5 u% N' K' m //SIMO: w* P+ A1 `5 P
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 ~; y9 s9 ^; r$ k( A& O( f+ r
//SOMI1 k0 Y& Q6 D+ U9 S/ ~4 G4 ?4 @
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI/ C: t+ B) E( A5 d* F* j
//CLK- V* h; L% N' m* l+ o/ q
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 K1 O* o" q2 Q- b1 m
5 k Q: L" |" D; Q* k# Y# o // LDAC, C ^, _( S* g" L7 w$ \; q- t
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* c) I1 y2 m4 W# ?( a1 I8 J9 Q4 z/ c/ k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 O6 `% I8 }! E9 g: ~7 m7 U" n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% H1 W$ w5 [1 I" V0 [0 \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ r$ N+ z% n# J9 ^) z# A5 Q2 S
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; |1 j% V" B9 s1 d$ N}
) \! l! t! l/ ~ Q" ]9 p& j# c
6 L$ [5 Q5 Y0 `int main(void). E+ X+ Z8 t K
{% p3 E# O* |/ d7 v6 w
// 外设使能
2 C' t$ o7 I* o! @ PSCInit();0 \0 i( _" k; b: |# w9 w
8 e( H+ \' K) l% u4 B
! x* h. S! t$ C9 I# q( B1 D0 b) j // 管脚复用配置 @$ y6 U8 B. s2 e; Q! ^
GPIOBankPinMuxSet();
# u5 {' e$ @5 V for(;;)
4 ]( |* a' Q# q Y {
% F- P \3 P8 h7 t: x# d SET_SCLK();//时钟正常输出
1 @7 q3 t; t X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ D& N/ _! [) U GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- e3 L5 L, e8 C2 [" R! B2 n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
[6 o" i" r7 q# e! v3 c( L( X* P h: N8 {( T! @
delay(20); y [) `$ ]' J- P
CLR_SCLK();
. A$ Z9 N) W8 l3 o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 p( O, f7 ^7 m. k0 a; u7 }) O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
/ \; |7 b. m- ~8 p0 \8 V0 p9 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 ]. _( M) R% ~3 j: q/ Q9 o
delay(20);
# B+ |! J5 @1 Y4 x* ]- ` }0 T5 ^ y7 ~" @( e6 a
}
2 W) y4 |, g1 H; \ |
|