|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 G0 W2 s, Z- j7 T' J- L7 }
void PSCInit(void)
/ ]0 o& }, z3 h- _2 g* ~& y{
# \9 g6 p' U$ Y& W5 w) h1 B, Y4 G PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ E9 G" z3 o, b- B: R}
f1 Y2 o- h( ?0 [8 q3 ?# j3 [8 F" h" e; i0 Z
void GPIOBankPinMuxSet(void)( O# k7 W/ v5 Q6 W
{, b# K2 v2 m2 C2 ~2 q* e- y
// DRDY ------------ GPIO6[14] -- 111
0 _& G* i" X/ P( k% U2 E" M. \/ t // SPI1_CLK ------------ GPIO2[13] -- 46
4 u9 h2 l L$ p" W0 Q, w // SPI1_SOMI------------ GPIO2[11] -- 442 [: U8 c* G; h% q
// SPI1_SIMO------------ GPIO2[10] -- 436 E# q! j* e" W- P$ x: g
// SPI1_CS2 ------------ GPIO1[0] -- 17
; `- q3 Z. i. ^# o8 p3 p6 k // SPI1_CS3 ------------ GPIO1[1] -- 18
) ~& C( w8 ^5 ]5 k- {( f
) Q9 }' X9 I- g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ y& T9 Q7 q) p$ _" o2 A7 c
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
1 p) x$ |" C. U. h$ H( z$ [: |. n } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, t5 [4 i9 |2 Y
# R9 l: p, k5 }7 |- Y L D
//DRDY
5 M& F b# r' e6 g' D GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ ~0 L! j# j" R( f# m- i
// CS2,CS3, L! g+ P7 x4 q0 c1 `9 |
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 d7 K: |- J Y( ~* u, O GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ x$ _, H7 g9 h$ B1 i3 G& r //SIMO" ? }$ p; ?% `
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
, B! }5 u2 e+ l: z( l //SOMI) ?" p; V& y( ]( G4 T" [9 |
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 ~. c1 |* ^ f% W& e
//CLK
4 V9 s- @7 H1 P$ i GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
! Y+ Y" Q8 m, @1 Y Z, e5 C' J5 X* g! [
// LDAC
v5 K/ s( U0 O/ l0 O GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, Q) R; H- X& a& j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. z0 }% n8 `. R! g7 J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ g% w8 ~' o2 k4 ^. \, v0 K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 J( u, @; u4 k" d) U! e Y GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* k7 p2 c: i4 h9 v4 U; r# T
}: e+ s7 W6 M2 M
" z+ Z6 d7 ~. N; ]) U# u8 l+ gint main(void); l3 [0 [& w6 R6 J
{0 o ^4 D2 K5 ^& i' _& ~6 X2 Q3 M0 M
// 外设使能5 o7 z. `* z' w" f8 ~5 ~7 B8 C3 d8 U
PSCInit();/ O% _* ~ B. J6 `% O
& K& K' r+ u0 e. e& o L
4 [; G( Q$ Q! D9 C# n3 R' ` // 管脚复用配置" L- r6 ~! u2 v7 U
GPIOBankPinMuxSet();
! ^9 z. i. P, L- v for(;;)
0 u5 |7 w5 [7 `$ t {
- I% _' V2 D z- _ SET_SCLK();//时钟正常输出/ i4 m- A5 T8 x+ s# l
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, ^! Y) [$ J1 j7 G, J2 } GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" Q* Z D/ ?0 s e) V4 K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ Y9 W; g- e# P$ k( [4 ]. p
% X+ ~# T9 F! j3 T- V delay(20);3 |/ e- J8 i' E5 W# k
CLR_SCLK();9 g z, p2 c _5 _0 W1 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
2 g. g1 p, ?2 M3 q9 ]3 w- u) p. Y) K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 v2 A3 |( L( X0 C GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ v8 u% s( v3 K9 `& O6 y. E delay(20);
6 t- `* p% }3 S0 J) \9 I }
9 u9 C& L) n4 Z, o) f}: U3 |; l7 p( z- x- ~; \
|
|