|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ H& c6 ^1 k4 {/ o k
void PSCInit(void)8 W, n6 g2 r' w2 \/ W9 w% ?. _" f
{0 K7 c: s. ~( G, I, j4 W& [+ L5 [
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- g/ w2 m; |8 \' d}) v+ z( K) Y$ X9 B
5 M( }; t; C, W6 B( nvoid GPIOBankPinMuxSet(void) A' o+ B1 c0 {# H4 D7 `. x9 Q
{/ d2 q* z4 d. J% P; B
// DRDY ------------ GPIO6[14] -- 111
* O; o) W' o% m6 h3 Y // SPI1_CLK ------------ GPIO2[13] -- 46) H- i* @/ [+ \
// SPI1_SOMI------------ GPIO2[11] -- 44
' w6 g( V# i# P9 i/ C // SPI1_SIMO------------ GPIO2[10] -- 43
" w( x1 ^" ]# e: u! v$ O // SPI1_CS2 ------------ GPIO1[0] -- 17
I* ^ N8 h% ~$ \ // SPI1_CS3 ------------ GPIO1[1] -- 18+ J& G; u5 |7 `0 d
y: P' R+ `) O) l) a" k0 G q- L0 c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
* P) F# z g8 K2 V& [6 H4 S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ v' X5 M$ F/ \. m4 H6 W0 J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, s' W. x/ y# u7 g; r/ L2 A; k+ _+ w0 I9 W; f! Q9 I8 {5 u
//DRDY
: I8 [# W9 C8 p2 A- x, ~ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* W& P6 b/ ^* N) P f // CS2,CS3* O' Y" e/ L4 W! R/ D5 y* e5 L
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# x( o! t. ~% y GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' F; q3 U2 N# u4 }: C( p //SIMO
( o$ S: X% G! ?" X3 P5 F. `3 b3 y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO `1 w5 x& o3 b. g& {# I/ W
//SOMI
7 ?* B; k$ z/ z; n% i GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 t% J8 C& k3 W. `5 c) n# r4 Z
//CLK
* x. t: [ ] r0 I GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& C+ a) D6 r- r' ?
' M% t; p% n6 e$ c
// LDAC* ~% S4 Y/ o4 B2 c- Y( H* U
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 ]# }! `3 u$ Y7 R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ U- a% b1 y+ ~9 F2 x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 ~9 s5 Y5 J5 `. T$ X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ f. o$ L; q6 P/ y# k. q0 s& W: F3 [
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" q2 X& m6 O% J0 _}! y5 v( d4 V' m) F
1 ` [/ Y* [. `& ?int main(void)
6 ~3 ~ l8 e' x0 _4 c' f{; i5 P1 ]% `; E# ?7 S" c
// 外设使能
4 K) S# J; L' W2 t% X7 |. h PSCInit();7 ?& @9 {/ |1 A: c; W- x; n& f, g
& {' {% Z8 ?- ?4 i4 S" ?
8 c: n8 d( r5 T) \1 O // 管脚复用配置) A) v( J% J4 w* R2 f
GPIOBankPinMuxSet();4 s2 e2 l9 [* X+ w q# b
for(;;)
* |" a3 J/ Q" m | {( e2 }- k8 U r3 Y) [
SET_SCLK();//时钟正常输出
3 x8 R6 H- u9 A7 A ~ j% Z4 f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% c5 s; r+ T8 D$ l4 R0 r! B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ \ `& T! e& }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
! E% F0 Q- b) _, m2 ?2 }3 W9 d1 b* C# M `9 E
delay(20);
6 e2 `; X0 r* ?+ ^7 c CLR_SCLK();9 _4 ^" }- [& C" c4 P/ H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 Q+ x" M( @3 h4 O5 V8 @. ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 _5 [2 d+ x, C5 `' H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 b+ A" R* d3 U8 w7 [ delay(20);8 k$ l6 Q, Z# W& o# k* M
}
3 p4 {7 e( l; A. F. \/ r}
( _- S. \! W! Y. ? |
|