|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 c' c% b+ o8 N# Bvoid PSCInit(void)+ X* B; M. X# ~2 T" U2 R
{$ n. s/ I! x* ]7 L* I
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 r: C4 ?+ R: R5 V/ K}
* f5 f4 ?8 Q9 ~& j% M! {+ f H& s+ u3 E2 w% ~' L: w: P, k$ A
void GPIOBankPinMuxSet(void)- {/ s, I' q) U5 Y1 b1 N8 Z6 @
{6 X1 } q- r1 h2 K2 Z/ M
// DRDY ------------ GPIO6[14] -- 1115 D2 _/ d! l4 r/ p
// SPI1_CLK ------------ GPIO2[13] -- 46
( W$ W* A" {& E2 [ // SPI1_SOMI------------ GPIO2[11] -- 44
( S# M* R- H- y/ y _ // SPI1_SIMO------------ GPIO2[10] -- 43* J, i Z3 L9 [% P" B) K- k4 ^' {
// SPI1_CS2 ------------ GPIO1[0] -- 17& D) S* k' _) P/ Q2 j) T; |0 [8 z
// SPI1_CS3 ------------ GPIO1[1] -- 18' u' V& X- k& V/ [6 W6 t8 Z6 ^- d
4 n* M* n" n- I# } M' U, M# d' I
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: ]2 u; D% n4 H* \# {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
2 t8 b. r Y9 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ x9 K5 {3 N/ @1 p8 \
% v, @- e6 m/ u+ _+ ? //DRDY/ u# `4 |: q$ g9 o+ k
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 _& {% E0 C$ p) d" c/ G3 k // CS2,CS3
# a5 o3 F7 E% I) v GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 j$ k" s0 |6 u6 R0 {1 O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
# ^+ ~# W1 o- I+ K5 A2 _ //SIMO- b: {7 v& y* w1 t+ T9 R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 f! i e& I3 b* o; y* F2 I5 l8 V% P //SOMI) a( x. I' X6 y& X4 y0 R
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! \# Y# c2 i1 j //CLK
+ m0 u/ F: @* {8 d( ]! E: z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 M) J5 y$ {+ g2 @, f. ^
3 v; J9 D- T8 B2 T3 r" v // LDAC3 ~" {" A' T. ^; k- x
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 |6 z7 o3 h( R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" U4 E# T6 j% z' G& X2 h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 D9 a4 o& S8 [% M* Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS32 \( g) J/ C5 E8 r
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY: q# w( [4 b1 K' D3 o
}
' ?6 J8 ~" j* R) M3 ^: n/ o% U; r/ Q5 g! u2 S
int main(void): W: x; R: K& Y' O* ]
{' I/ Z' }' t& U7 E% X
// 外设使能
7 b2 U" E# p3 F# H C PSCInit();8 l3 [1 Y" W- F6 q) V9 Q _: E
. a# Y. y/ D& n- S7 E1 n
8 h; n9 o. y2 G% w4 t$ \ // 管脚复用配置; {: M) Q- `0 H; U# ~: I" H
GPIOBankPinMuxSet();. W) u/ Y. ]; ]' D2 i
for(;;)
3 l R9 b2 s' c0 M7 s) K/ j* u {2 {, {/ s9 r' p k
SET_SCLK();//时钟正常输出
+ K2 J/ m. u" }$ Z2 P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 o5 Y9 s: R8 R4 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; x4 T& t) s6 E8 x1 k( g( v7 X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
: k$ y3 e3 E# P9 o
# ]2 c' P$ O7 v0 O5 a1 T delay(20); a& S; e' Q- t3 k0 v% x
CLR_SCLK();7 B1 |7 K2 h3 S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* \( J. S5 \( E, A/ G7 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 ?2 w; X( f8 A9 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 D/ X* T v9 }. i, e1 L. n( [ delay(20);, b5 v# I6 x* [8 P- @6 L
}/ N* k" R& l+ R+ z8 }+ ~4 z/ a
}
7 T' J8 g3 U2 J: I |
|