|
|
使用下面的例子代码,不能使SIMO和CS为低电平:8 L% C9 L' P! G* j
void PSCInit(void)$ z* ?/ K3 z; a/ i
{
. }' s2 M3 J, F+ g1 y' u% N# f PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);8 f$ `% i: n# _/ S; P
}
6 M% h+ y1 t( p) o1 m' H0 r. Q8 g
void GPIOBankPinMuxSet(void)
4 a- q; }0 O& m( m0 I1 @+ Y{4 B: ~& Y L) `! d, I( z
// DRDY ------------ GPIO6[14] -- 111
* r6 f1 v9 `4 a+ |( } // SPI1_CLK ------------ GPIO2[13] -- 46" ]) h) _: r8 L3 u7 B
// SPI1_SOMI------------ GPIO2[11] -- 44
: t( a7 @* F m8 @$ U: U& K1 T. D // SPI1_SIMO------------ GPIO2[10] -- 43
{% W/ ^& f& q // SPI1_CS2 ------------ GPIO1[0] -- 17
+ A- R$ g' Y) \, |( j // SPI1_CS3 ------------ GPIO1[1] -- 187 K1 P6 ^/ G" J5 y+ A
' s) ?7 n: o# u& z. n* `6 r( P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);$ B- V" h! p# E/ x ~6 ^* \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
, ^: D0 X0 U0 S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- a2 t% s" H3 d/ H, g" S. c/ \0 X% }
9 S3 {* ]; q8 ?* M8 L* Y //DRDY' u4 z/ q' k+ x) R) n2 J' }
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 x: |' S) G, o // CS2,CS3; p- u5 I$ }7 B3 g& t
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
2 q) c% J: i: L6 P; H$ i GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3' e4 o/ w& V9 K+ q
//SIMO p) t/ k6 w- C- @
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 C. D% [) C9 E! U ]/ o
//SOMI
) o; U! m) M" [) L7 R. Q2 Q GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ Z! c9 g% M: X //CLK
5 V2 d9 i3 z' p; f/ v+ q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK x2 P" U3 L6 J, ]; Z% Z. b ?
( U2 ~% W, {: m: H6 o // LDAC; |# L: ?" I3 Y+ m* O$ w
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' a/ _; q, M3 h$ Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( r7 k( g$ x+ j9 ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( k3 ^- p- V0 `7 z: J5 @8 h' L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. \. y D5 \8 Q! J
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 H1 F8 Q' u( b% P" e" f1 [}- @% ]$ L1 o# J3 Y
. Y! S9 B1 p2 f) q/ L4 h: Bint main(void)
& ~* p. d0 t3 A* w& O' e{
/ _$ W5 J" t3 D+ I // 外设使能
& {" z+ f; L2 C! r D; h. q6 b PSCInit();2 }. s/ L" [; ^. v' R3 W8 v
& B: w4 ]5 u+ T6 d- \
3 U5 T8 o0 N. I2 ?- t' {) U' ]" y // 管脚复用配置" J* r$ P3 n- u' c% `
GPIOBankPinMuxSet();# l; M- D2 U2 B" H" p# u. M* m
for(;;): X+ N, Z2 C6 t6 b( s4 b- H! V
{
/ W h- l; F n& q( S SET_SCLK();//时钟正常输出
# }2 w; x4 d" p4 _% q- H2 E GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 `3 e9 `( w, G2 X8 v2 Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 C6 A& C3 O6 v, g& v GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& m' ]) _) a0 Y7 _7 T& Z( N5 q3 p6 N8 E3 w6 c
delay(20);
( C6 g) w; Z5 p' k7 ]" q) d CLR_SCLK();
~% b( {8 ~; S* `5 p- w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ F# l7 N/ y9 Y" Q3 P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* [4 O- F/ m& v2 Y6 m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: w# n m0 [0 p" w# |3 h0 [
delay(20);
5 P% o J3 x8 @; o* ^0 |9 B5 m1 i }
4 C6 c U, P3 \; A}
- H0 d( C, z P; h5 Y |
|