|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# n" B3 D9 q( h6 x
void PSCInit(void). j! w+ z, d' x: A# c
{
( ?/ @" ~- c6 E+ Q9 n4 I, W PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);! o7 q: O2 P% T% y
}
" k" v; Q6 ~" x# N! y' C& N6 Y
+ @! G: w0 j8 \, P; Tvoid GPIOBankPinMuxSet(void)7 V; w: a: m5 ?
{
( Z3 l2 ]- {# K6 x // DRDY ------------ GPIO6[14] -- 1117 U: A+ M( c( ~+ a
// SPI1_CLK ------------ GPIO2[13] -- 46
( S2 A' K k: _6 S1 X // SPI1_SOMI------------ GPIO2[11] -- 44
$ v8 L- \8 Q# S- L3 Y // SPI1_SIMO------------ GPIO2[10] -- 43: s1 ?9 j* c2 A5 H8 {* |
// SPI1_CS2 ------------ GPIO1[0] -- 17
% O& G/ n' s4 ^2 u+ U // SPI1_CS3 ------------ GPIO1[1] -- 189 b9 _* Q) w2 T( T. A6 i8 [2 X4 V
: h. }5 {4 C7 ?# _& t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 X0 O; k# v! c$ K) e6 E& K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);- h1 V" g0 y. |. ~' Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' g& w: \1 N, z# ~* {2 T3 V
" x0 F7 L0 ^, \8 E5 T //DRDY; z: C, S% q; _: ?" Y
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 q4 G6 w: t. y$ }: b2 U$ T // CS2,CS31 R# Y2 `) h/ x, C9 X4 x5 H
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
7 H; ]% G/ B+ E7 N) \ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* G2 f8 K% B0 s5 h1 L, v //SIMO
. U; i( ~: e0 d1 W# ? x GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO5 w, H+ p8 C0 O1 m. p5 z
//SOMI; H+ Z7 |5 X4 c/ C! l6 t8 [: O. R# N4 x
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% m; x' e, @* Z$ h' e* y
//CLK
4 z" n! C8 k0 D GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# y t3 ~1 D8 D" r' T. s, o A% j; o
$ m2 Q$ N5 W# b5 }6 W9 m! x // LDAC& O+ G; i1 s m2 k2 y9 s
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 e$ w2 H1 E) b w0 |% ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 j0 E; X4 G) u. `: e5 J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& O* Y- f! ?, ]# {8 J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 i; J0 x( D* B- a W) v& R5 k9 P4 A GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ D. q) ~) f$ A4 {* i5 b$ L h+ m6 ~" N}
/ n) c* Q" `' e3 d% [- ?* W" A$ x. `
int main(void)' a7 P* g# I' G) u$ g3 o8 t# L# g
{+ U5 K. O: t9 e7 `* [7 G- F; ~
// 外设使能$ |3 @( L/ B% Q4 X: J/ Y
PSCInit();3 I1 D- u0 v% A
9 E+ Z+ b, E; O
, m$ ~$ B: N1 y% D5 r' L$ O
// 管脚复用配置6 R; }4 ]& t- N# C
GPIOBankPinMuxSet();
/ C4 j2 ^1 f0 u; |' |, t$ { for(;;)8 b2 m `' k z' \9 Y* w+ D* x# |7 L7 t
{
9 O m& v9 k w* q SET_SCLK();//时钟正常输出
5 ]) @1 y. \8 ? x& c3 K: L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 P# k5 [; h! F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 \( r* u' ]: \4 _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: G1 d1 n. M$ X# }2 T$ \
" K" T5 ?+ G6 F! ]/ g delay(20);4 z* S* r# ~; `. V
CLR_SCLK();
& a8 x3 q8 _- t8 V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 ^: }2 [) N) C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS32 [$ t. t& _0 y! [% r& b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& P7 _/ i$ ~' |( I delay(20);
/ x5 W" s5 R( c) b1 U: d }
( Q6 Q5 @& I, |/ I5 u2 j) p}7 M0 L, n, Z6 H
|
|