|
|
使用下面的例子代码,不能使SIMO和CS为低电平:8 f# {, g5 R U, T8 I! D
void PSCInit(void)# y7 M+ ~$ n3 T4 U9 I- b
{# R6 a6 C* d/ w* r" x3 z9 q
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
' H9 ], e* \& j; ]' n4 ^! v}
& {& z! s9 C1 }0 _
: N4 F2 A" @6 r8 yvoid GPIOBankPinMuxSet(void)
" V- A& c6 u; q& S& Z6 W{
$ c. i$ ^: s7 x) W; l // DRDY ------------ GPIO6[14] -- 111
, |* m$ [8 r& b) u( x. p // SPI1_CLK ------------ GPIO2[13] -- 46
5 A8 l- {3 `3 J+ i3 b // SPI1_SOMI------------ GPIO2[11] -- 44
3 o+ F, p$ x! _8 v# p // SPI1_SIMO------------ GPIO2[10] -- 43& Q: d Y6 [. k* P& B
// SPI1_CS2 ------------ GPIO1[0] -- 17
- ?: M4 m3 y0 S8 L; C- r // SPI1_CS3 ------------ GPIO1[1] -- 189 d5 |3 W) x7 F$ E( T* u
$ b- I: y- G9 i$ ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
* t6 e- d& J3 @' E" E3 F6 h* y- g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ F/ a* a! Q) B# L: c( Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);: `1 E/ k0 F9 B" m
& q, ?: H9 Y; b, O //DRDY
- G# ~0 O& G1 f4 S+ B GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ Y% z1 f/ Y- j' f8 J& S5 q1 R4 V/ b // CS2,CS3
# g' n3 {, {6 P8 Y; ]. q/ w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ m) Z" X, D3 W) E3 G& k. p+ W
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ T0 M1 d' B$ B% a# h) ?9 Y //SIMO
! p+ o5 { ^' o3 X- s+ { GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 ^' ?7 w: L) ~" G9 Y+ K
//SOMI( e4 Y) ^$ ^" d. a/ n
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 `: Q" z$ i$ X0 x j6 t
//CLK( r% @0 _. V8 d
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ W: M1 B& r1 O& X, y- R6 v7 k
( G$ L/ @' R7 G4 ]- j
// LDAC/ X' ^2 `- b% h1 {8 f3 e' a5 P
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK+ B/ U4 u2 U+ @% E
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% ?! q. a( N; ~3 k! [# F: d+ q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# J5 `# ~) n# R2 ?) R$ D% r8 C! u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3$ l, t5 R% }! K% D+ B/ L: Z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- O5 S, {9 E) {5 H: C8 X) @}5 ]4 S3 A% j S
$ E% b, {2 F8 `5 R( H1 }int main(void)
- r, Y# N w# l+ p5 S& u{
2 k& z- ~; m: C; P" q# h // 外设使能
% F+ p: r& ?0 Y; P2 {( o, _" v4 L PSCInit();. K4 K2 H5 B+ M8 l
. Z6 y8 T: C2 M5 Y' U) \2 z( E
. w- _# b2 L- ?9 }$ W // 管脚复用配置5 Y0 |$ p2 v2 R# F n
GPIOBankPinMuxSet();
8 X' I9 b1 \( D' o) a& V for(;;)
; `4 l" M# N# T* K8 l% j {
9 y$ j! _/ g5 ~ SET_SCLK();//时钟正常输出
; f. L" B- j1 V# S% m0 Q8 O7 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 N' {* i0 F+ i# e+ b0 V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 j! \& H$ h# Q* y' s6 V: [) K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
% d3 `) I! o3 r( i9 s5 \- F( j, q2 j# `. c
delay(20);9 J* F+ s( v1 F$ ^
CLR_SCLK();
5 a9 F+ ^, s8 V! n( W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ K4 K1 x' `# K* M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% D, Z3 t0 F8 J" b. ?! _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% G. ^9 x1 k# q3 v delay(20);$ H! j( Z/ v5 s8 b& o- a$ o1 A
}" ?% }% e, Z7 j: ?7 K; j* E# ?; K
}
1 v( F- S& M: L3 O% D |
|