|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 {8 ?# `) M5 Y; ]
void PSCInit(void)& v( B2 f. f; x' f: w p
{
0 Z3 ] M" I1 u PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 P+ e6 C* `% D. a8 j4 i
}
p5 W! i) C0 z6 S# M, p7 F
5 g- q T6 J2 |: R; ~void GPIOBankPinMuxSet(void); W" S9 e# X5 r
{
1 y7 \0 B( ]3 [. @; w5 @ // DRDY ------------ GPIO6[14] -- 111
3 J0 K9 x6 w: h# ?) l# V: p: K // SPI1_CLK ------------ GPIO2[13] -- 46
: j4 h5 U8 }' B! S // SPI1_SOMI------------ GPIO2[11] -- 44
% d, ~5 U2 h1 W // SPI1_SIMO------------ GPIO2[10] -- 43
B; v( F: N8 x3 H2 r // SPI1_CS2 ------------ GPIO1[0] -- 17
: r k$ ^: K- W" J // SPI1_CS3 ------------ GPIO1[1] -- 18; V2 b4 n) Y$ d0 F- f. ~
S" ]% @3 w2 n7 h5 }: [' ?2 L# D3 c1 { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 M2 r y% D% N HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
3 A3 t [/ \4 K0 |2 _ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);: O% K" _# t* `
; A- N( R0 T9 T1 O
//DRDY
! H( p* b3 }! ^" W. N GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! Q" M9 q; @6 l6 T0 l B! C // CS2,CS3
4 Z+ f. O# ?& T( ?4 ~! [4 Y$ O7 | GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 y- U# G1 \7 O }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! P5 L) `& ]! Z) J& v2 M( J* J$ N
//SIMO
) ]2 Z* Q M2 h! V3 f* B# A$ z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
l* J" t/ h- m, h& S //SOMI8 v; e U" j. j& H) F* z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 l* t. @9 H: Y" _* G. J //CLK& |# F7 I/ x" ? |) u2 g7 h
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK+ ?0 l0 [8 e0 x% U, {' N
2 z3 ~; S$ @# k" i3 C6 `# b // LDAC" F) C! A% R' a/ ?: n# A
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK+ W6 o0 g, d! }9 W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* f5 t0 \% r+ Y# f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 }) G* m9 z+ N! D3 A5 B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& W% Q4 k; ]* v% ]+ l4 E1 Z9 @ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; S+ ]5 z: a- F3 r; k}. ^2 Q' ^/ y7 S( s% h9 T6 q
* n+ A- u9 `9 n; Y! Y& |* }
int main(void)
7 C3 L) A0 R2 l3 o{
. v: s/ _ V6 S* a+ K9 {1 v7 z1 \ // 外设使能
* m' Q6 X& g9 G/ v) s+ {, O _ PSCInit();
0 G) F$ _2 i. U; ~& j1 g+ n3 x1 {/ _: Z2 V. w1 t" d
, D" Z$ k: P' J7 \/ D ? // 管脚复用配置
* d) |% h# M# o! i, v, p7 V GPIOBankPinMuxSet();- I2 G$ f$ [, ^6 m+ s- F) f
for(;;)) U Q$ n( T: t( d# @; Q
{, y6 @6 i" g) p \" E6 f: J; i+ ?
SET_SCLK();//时钟正常输出; H4 [3 V- N. p' v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 t8 e( h, r) `/ Y9 Y) k9 Z. Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3" ~1 I5 \% [4 y6 L+ m1 G% A- }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' d/ e1 X- y/ I; Z/ e! l, I5 C( C% w/ N `" }
delay(20);
' g! R0 e0 C: R. c5 ^ CLR_SCLK();( h# u7 d3 { i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ ^$ M$ _5 X( y6 G1 F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3/ P7 ~9 E- T1 P+ V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) b! @" X# H8 [/ t+ f/ c delay(20);
; P! m! K9 E& ^4 x& u }
9 h( {; W) h/ x# d}. l. | x; N* a8 W: n+ ^
|
|