|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% [ t H. \9 P) t) |" ~1 m; h
void PSCInit(void)
1 N) L8 O! a$ A4 @{
, |' H! I+ W" A* b% T PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% V' q0 s/ Z. O) F0 R3 @}
7 Y) K3 W) D# |$ Z
4 B1 H3 O& g! g) Xvoid GPIOBankPinMuxSet(void)
+ g% L2 d8 T, p0 _6 x{8 F$ p3 U5 Q* S; }+ N9 B6 ]3 z
// DRDY ------------ GPIO6[14] -- 111# Y( h: o0 @! H- b& o8 a) Y
// SPI1_CLK ------------ GPIO2[13] -- 46# u- m; J& G. {/ c) u+ ] J
// SPI1_SOMI------------ GPIO2[11] -- 444 G! V6 h6 h0 c( O" \& R9 @9 ^4 h
// SPI1_SIMO------------ GPIO2[10] -- 43
~. H9 Q4 z" E3 @6 v) F. C; @. z // SPI1_CS2 ------------ GPIO1[0] -- 17
& L. ^+ c4 x8 n4 r2 W# T // SPI1_CS3 ------------ GPIO1[1] -- 18* [5 P" t. l& e G
+ m9 Q9 q1 B. u5 L g5 j$ P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
- U6 [% O$ N& n' R5 Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& x$ v( c7 o. _3 @: ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 V2 J' x( T8 |8 {/ y" r8 I
f' g1 x d( m6 N. ? X7 P //DRDY+ g# n' i0 x4 R% Z: p; K% M
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY3 r2 U8 M d7 N4 C7 \
// CS2,CS3
) r# j! ~, ~* ` GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 i% O7 D7 P/ |) {) _ y- Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: B1 S" w9 P% B: T3 P. ^3 n //SIMO
k8 M/ H! b/ q. I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" g* t! a7 v8 P; V" y" {: R9 ?; }# I
//SOMI5 ^0 p7 T9 ~8 R. g
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 F- `" C9 \2 L //CLK
3 z8 l5 }' @; {+ r GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) r6 h8 i9 w2 M5 j
2 n+ M3 W# x) W, U8 T: n. }3 i2 X- S // LDAC, X, y! I/ i% f4 `+ K
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
& n) }. }; k0 [5 Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 V2 D+ R$ n8 p6 R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 A) ]7 H% g4 F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! V' r9 V. F7 t! \
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. U3 r* a0 e$ |+ c1 @5 C8 S& H( a
}
/ O8 } _3 M$ K$ Y7 l0 R/ j# G% W* h0 x
int main(void)
3 y- B- M# e" ]" l8 v0 p6 k# F{
: n# M! y- I Q // 外设使能$ d$ e# z# V# g
PSCInit();
2 k& S# ^+ p, L) p" I
6 F) D+ D$ h: g2 z
4 s d G2 n3 V' U# Y% } // 管脚复用配置
, l' O- Q9 v/ \+ D GPIOBankPinMuxSet();; E8 v. ^2 n9 F6 Q9 \# D1 s. l
for(;;)
' Q3 J( g" K' R7 A/ Z" ]' U& W+ F {
/ f: B' L# o$ W SET_SCLK();//时钟正常输出
- E4 X+ H4 M9 i( K; q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" K# N0 }6 K E; k, G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
' G$ H( H9 Z$ Z8 i8 q) R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 j" _$ e8 g6 F" I* t, v) Y- b
8 p. ^1 b6 u$ I! A/ g9 L7 @+ _
delay(20);
7 ]. [: l) m" ^& |! h: x CLR_SCLK();
9 `' M) h, i1 ^, T( V( j' }0 {3 D! \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
& U' W z6 y6 G9 V% @5 N0 E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3" g, ?# u Q$ p, ?4 G' U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 m$ D- S8 m2 v6 a delay(20);' C9 Y6 R @- ?) O: B
}
& g2 x1 h: P) ~6 [/ h}4 S. }9 t% S' J; C' i
|
|