|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 m& X0 ?. w6 H& v
void PSCInit(void)7 R+ D* d3 U- d7 A1 |% d
{! ^5 Q- v/ O# r! t) m: P( O
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ a1 n% b# ?5 U/ h& M
}" A2 v2 F# l6 W
! ?5 z. Z% [. i& O. e% _1 s: k+ q3 uvoid GPIOBankPinMuxSet(void)
$ Y3 Y' K+ G. w( t! m5 \{1 ?& Z# u9 E/ `- Q F) B7 ~( t
// DRDY ------------ GPIO6[14] -- 111
9 d1 I+ `2 i5 c/ B! p J/ E // SPI1_CLK ------------ GPIO2[13] -- 462 _! r7 i7 [% ]9 l5 c/ K. u
// SPI1_SOMI------------ GPIO2[11] -- 44) X' Q% |/ ]% E+ J: Z1 e
// SPI1_SIMO------------ GPIO2[10] -- 43& c* F# T3 n G2 ^
// SPI1_CS2 ------------ GPIO1[0] -- 17
8 {, L' y+ Y! u: N; E/ K: `# D // SPI1_CS3 ------------ GPIO1[1] -- 18
4 r% N1 R! s5 M: s% q8 P( [
. [/ Z3 F, u; D2 k* O; y/ A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 h k8 Y* Y; _2 ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 w& I& g- I! U3 d6 [' L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
/ J5 e; p; g1 J5 E2 N4 c$ L" R& m4 f+ |/ {* c+ e
//DRDY
. X, t: i- ]! u4 R+ ?4 R GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( L7 T: P6 z1 \4 u+ F( B6 b* h$ t // CS2,CS3
1 D0 M. u3 Y/ r$ c GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ g' r7 @9 r* M) w/ C9 ]' l: ]( X GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
F3 @1 \& O4 P9 t+ X0 _9 g5 G //SIMO7 o8 F+ [% y( B
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; M! Q. l9 Q* }& ]& X
//SOMI
( ]2 c. Q- X. G GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI# o. p. L, M x7 m- }5 a8 P( ^
//CLK
9 g0 [" R2 L+ N( Y! ?7 C GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK0 n4 Y* z7 J! g8 {4 U4 e: z4 z ]. q
$ [& r3 u7 Z8 M' f" e7 f) j9 |, i
// LDAC1 U; u+ b |) l
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
N5 Z" X7 b# c8 g. I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, u6 o2 r% P6 k6 D8 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- |- `9 Y7 w1 I0 x: C3 m2 n. B% n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, P7 p# P+ |% x/ a
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( P" c9 L0 r: I+ G; j0 i9 O}
' @+ r9 ?3 }: P& q ~
! U* k& @, x9 L! Z9 [int main(void)
$ K2 m- Y* d# ^$ b& y/ y2 D{4 Q3 i8 K8 G& u B- M
// 外设使能
# u$ Z+ C5 |, ^% ? PSCInit();& q0 n: D; G6 Q7 [, x8 l$ E
6 K! a$ k. m' W8 N; q w " I$ B0 Y: G4 a+ v7 i
// 管脚复用配置/ F0 C# U8 m ]1 @! v
GPIOBankPinMuxSet();
% c+ g; l9 Z* V9 U for(;;)
8 r) E, ~; T Z; ?* C3 j+ \ {6 c6 e- w7 G/ T' f6 b0 o
SET_SCLK();//时钟正常输出; g2 `" E1 l7 n: a$ h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 l2 y5 |0 o X# c9 \ C9 }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 }2 W- }3 W" X5 J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
N6 m5 G2 t, T. F$ I* G+ Z) p7 c' T" L2 G- `/ E
delay(20);, m" \* w5 k J, j& z" t
CLR_SCLK();
4 g$ C$ f8 W1 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3% g+ v% E9 G# U0 X. y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 M) p0 H" b6 r; O V; b' H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! P0 }9 M; p2 U; T M8 T; M) w
delay(20);: v1 h4 w2 v+ i$ a$ f* U' _) b5 F
}" w1 ~' ~; F4 B1 c
}' F" U/ y4 L( }1 H5 ^, j1 h: _- t
|
|