|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ z1 x! w! n% p& P: bvoid PSCInit(void), O) l# ~$ T* f
{
9 l6 `1 c& y! a( E8 r1 y0 d% l4 f/ R3 Z+ P PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 Y, L/ Z$ D6 W& f$ W W$ v} A$ g+ Z0 n, r- ?# w2 \
* N; Q& d- J$ t0 z. o$ y
void GPIOBankPinMuxSet(void)
6 G6 i2 D+ D s7 p: w! r1 s{' E) h1 X& u6 R! z, p! ^
// DRDY ------------ GPIO6[14] -- 1117 D- c! z Y5 b- e3 K' D
// SPI1_CLK ------------ GPIO2[13] -- 465 \) M) E: X: l" V- d
// SPI1_SOMI------------ GPIO2[11] -- 44+ j$ ]" T0 g. ~1 v: v" }
// SPI1_SIMO------------ GPIO2[10] -- 43
6 t! Z3 A% u7 `/ F3 A9 t // SPI1_CS2 ------------ GPIO1[0] -- 174 Z, i/ S; o4 @ v
// SPI1_CS3 ------------ GPIO1[1] -- 18, ~) d7 ]+ Q% A. p& Q: k
5 H0 C. ^( Y! U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
1 l& G8 d3 l% q' H& u& y% | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( A+ B8 Q3 @1 z) a/ j* A, d' c3 ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
0 o. i7 I* y# s5 H5 W; M; J
" C3 ^) x) K& g: Z/ I1 O) f8 y C //DRDY8 c2 z+ b! ^% c1 y
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" Q) i; m) A- w1 K/ V( A // CS2,CS3# V0 Y3 n- w! d. U4 T3 C
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& c# b6 l: m& f4 C' n" E' q$ T GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3: v, L' [& X1 F# W0 y" l/ b+ \- ~
//SIMO; N, v, Q* |# H. g! U6 Z9 @
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( A/ m/ z$ u0 {( y# A //SOMI
# d+ H$ ], D; m1 f9 S" w) ] GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* x! {8 T7 C3 Z, c: _6 U( b //CLK
7 d4 t$ q$ S- n% N" I# E GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 Z& ^! i" l( E& n; t' J8 { l: I
* z# h5 a7 T4 L, \7 s& Z // LDAC' p+ G/ E. |/ }4 _% }- d+ M
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) q, p# W8 P; F1 f. R) [, c! v; h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* I5 i% a5 Y5 e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- A+ i5 Y m; s! J/ J R6 D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
: I3 G+ c4 _6 J$ i* `: ?+ A) S GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY w; j" H* B/ W: I
}, A5 ^3 |; \# f! _" b
2 U4 A9 ?: O: r2 _4 w6 T. {# ^int main(void)
) T- M# X) `- n/ c{
) p& x, Z# {# a. U2 ]- R- B // 外设使能
9 y U$ N8 [4 i! c3 z: n* b PSCInit();
5 x: S2 x& }% O1 K0 M
+ J8 u7 \9 D1 d; |, t% Y 4 \" s, _( U s/ d$ E c9 N
// 管脚复用配置
) M5 U0 T/ G/ H8 f% n GPIOBankPinMuxSet();) O, D* Z4 b6 w( w* h# p9 e+ |. E/ Q
for(;;)( w8 H' q( {% G6 {8 x* W2 ?& u8 H. ]
{
4 r0 O/ [/ }0 w, } SET_SCLK();//时钟正常输出- ^0 Y* `/ O4 _, w/ ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 a) ~0 P( c+ O# u x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ K6 v7 Y& R- Q+ ^/ y! n/ ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 B1 P+ @( c, G1 m
% _* k `5 N! a6 A- |. y
delay(20);
! V% V7 U) Y5 t8 Z7 \, u0 U CLR_SCLK();0 J" K3 [$ G/ a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 ~# k0 _; r0 j2 j9 |5 N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 R+ g+ u' R" U; U& b6 y3 W" v0 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 x" J. D! Y9 @* ~: F delay(20);, w2 u, v. E0 v1 n: l; K
}
' o3 ?& M I: f1 p4 o1 |}0 k- s c- R- z! s! [" G* I
|
|