|
|
使用下面的例子代码,不能使SIMO和CS为低电平:6 C5 V, X0 d g* c
void PSCInit(void). H, ^2 X l, s0 H$ O; C- d
{
' H3 [' q$ Q6 C9 {5 g PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
( O& D1 o$ D6 y0 K- e% ]$ K: n}
" S3 G- ?( n5 s: \" F; s
3 Y4 r% ?' J4 b1 {4 _+ Wvoid GPIOBankPinMuxSet(void)
+ ]" v8 }9 z% p8 b( F' T{
& h0 M) t" X: K) V1 e# h7 P0 n // DRDY ------------ GPIO6[14] -- 1115 _' V8 h/ y$ ~
// SPI1_CLK ------------ GPIO2[13] -- 46
% U# e+ R' V* P* E. w; J // SPI1_SOMI------------ GPIO2[11] -- 444 v* `6 b- O6 U* M' s
// SPI1_SIMO------------ GPIO2[10] -- 43
0 d' m! C, I" W2 a9 r // SPI1_CS2 ------------ GPIO1[0] -- 17' e; R( | u5 m; B$ r9 ]" m
// SPI1_CS3 ------------ GPIO1[1] -- 18! [, j% G: P& x; L* y
% i3 D) H& \$ W b! k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* G/ m- w/ ]8 m# i: r% l) B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 v9 C/ o/ ] C$ \6 ?% O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
3 K2 b6 q: c; p) \! ?
! t4 r) q; }, Q+ _- }! I //DRDY4 i. _6 f3 q/ r: ~
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 \ W9 Y$ u, p5 v1 X4 ] // CS2,CS36 y# g1 l% u+ S6 n# l' x. n0 F' Y
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS24 v% e( d) T- P( w5 ?! E) Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 g! W+ G* m% T+ J# m //SIMO
% K5 {4 G: f+ f4 o GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO% h: f7 E/ \8 d+ j z& V% j
//SOMI
. n/ l' y" s- n GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
( K: w1 s9 V7 A C! Z //CLK" [, f6 B. Q( i# ]
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" L" y9 t) Z; N" r% Y2 s
4 k1 I7 t" Z% ~5 T6 g( I9 m3 ` // LDAC
, F& i( Y' V0 W! D GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
- O; }7 I: Y% D, @% S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( S4 K( L" r; l1 q& ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* E# P: A8 d3 w; L/ K1 J* R/ S1 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& b# @1 U9 U5 }5 q, @ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY; t% c4 l, O/ c5 @6 T8 j
}! O$ T8 t7 G; D5 K9 G; d
* P; _& ]8 C- Y4 s
int main(void)
# X8 @+ b* D" n! B& I{
# o( s+ X# u* ]9 z // 外设使能
# I0 Z7 q \% h PSCInit();
0 o% z' k& e( _" _& w! K u: f, G' K9 S9 P# p6 L
+ `& l4 Y: c) L. s i9 H t' w
// 管脚复用配置
1 ^, [' T5 _. @$ S% Q GPIOBankPinMuxSet();* C" d: t- R$ o f0 F3 n
for(;;)
, m4 c a+ f8 i/ V- W3 s, Q5 e {
' h1 O5 \+ H: W. ? SET_SCLK();//时钟正常输出
# w* L+ _! T; u# s+ U; ^8 p' i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 F7 ?% m1 @0 v4 g' S% j* U$ T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) C/ ~$ M V& v5 x3 L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 w( h/ d2 b! n) v
- Y4 K9 L' o. F delay(20);/ _. g9 u+ |4 v1 U8 e/ k
CLR_SCLK();
. `) x3 R( g9 `0 F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 ~! ^' r" D6 w( i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ Q9 P& L( W2 O8 p* o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ `- d' K& c. ?
delay(20);$ Z2 X8 p- S8 B1 y* Z# q
}" q, M, }: O& r
}9 Q7 E( k5 I( Z8 e- E, J# T
|
|