|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. k0 u0 U7 J g7 r+ tvoid PSCInit(void)
# q$ f4 `- P" N2 [{
$ l0 p: N; ~' j" `. O0 I, l/ Z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 _3 U& I0 j9 @ E) n/ R7 a
}
7 t) M `. M) \$ G) t, d, L$ n; C6 W4 Q% E/ W
void GPIOBankPinMuxSet(void)% \+ z# l! S4 U( ?% t9 G& j; n# {
{
; C6 ^2 t3 S1 |* X- n // DRDY ------------ GPIO6[14] -- 1116 U1 @1 _/ ^. Y* w) c/ x2 r6 D- k) U
// SPI1_CLK ------------ GPIO2[13] -- 467 R8 w; D1 W6 l
// SPI1_SOMI------------ GPIO2[11] -- 44# B7 b& q. v( D" d
// SPI1_SIMO------------ GPIO2[10] -- 43- f# F1 I1 b1 w6 @( o, N, L1 k
// SPI1_CS2 ------------ GPIO1[0] -- 17
8 y' s* a- p3 I) |/ [/ ~# p // SPI1_CS3 ------------ GPIO1[1] -- 18
5 [/ e9 Z# Q/ P& k t2 V1 y8 w- |; h4 p$ Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
1 t# O- T4 n" O; B. C% @7 O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);: F& R; b3 v. K% Q4 v/ E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 x# ` Y7 [8 ?' G/ G0 q* H% @
$ r" r$ o. A+ q$ ]3 n
//DRDY
+ b6 N. A F9 P1 X$ N e GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 A$ e9 E2 r0 L' l. X# m" e
// CS2,CS3' u/ E6 V! h6 E; D% i
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! o5 d* I+ P6 I( q9 J# q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3& R; `8 K# `* b' P- S" o8 v
//SIMO' g3 U$ r/ w, A9 Q( m# M3 y$ r
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! l( e/ \5 E9 |' e- F: K Q8 ~, D //SOMI- i$ V z! d7 n% N& d: S+ k
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 n) P+ ]* `1 R //CLK& `# ]! E, Y0 z' _9 b
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 q( `6 y6 c. d5 G- k6 ~
, W5 u7 @4 B* k X& y // LDAC/ A& \' w( j' N8 P( r, h$ h& v
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' N1 \( z% M1 b9 J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" p2 D( V" |* c' r! J8 x! d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" R* l. i' V" c4 } GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 b! P3 V. J/ O GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* @" G' h& U; u. x2 v}- ?( }$ O$ \, b6 [& E' r9 d$ A
9 h* d v8 C) X; N9 q
int main(void)
& d( { U) Q D& I2 X{( x0 G; [; }7 r( `" Y4 W: N
// 外设使能' A$ i/ F% A8 l& y
PSCInit();5 }) S2 V1 [" O2 t8 i/ }6 R6 F. M
! H: \4 }1 [: o( h3 S
6 u" H5 I; A* q) ?/ j // 管脚复用配置
+ _6 N! p8 _: J' } GPIOBankPinMuxSet();7 Y& V" i. f& O$ I2 O6 l
for(;;) c8 T4 h3 m9 `/ [9 C
{4 I1 m/ j9 c& E0 Q2 u" E! {
SET_SCLK();//时钟正常输出
0 a% j( n: J* I$ _! f( Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. {& @# r5 l; F" A2 V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 i1 C" i4 ^3 B6 P$ a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN* y9 f5 E2 l! U
0 k/ ^2 }: l# _& e; c! }* f delay(20);
! Z- U# X# Z2 @4 J! p CLR_SCLK();; J2 M2 ~& d# G& ?1 p6 z5 O7 q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( s$ C) a, r: M% u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
# ~# Z- p6 h' j {& n! l1 [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 _& A: V, N* @ delay(20);
# ^7 v% F2 K1 N5 p% U. S6 s' G. g& U }6 m$ ?6 G6 Q0 r
}
3 @0 j$ v$ P- z" R: z |
|