|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
) s4 l- z' |/ n9 Z5 Z5 [8 s8 W% ~void PSCInit(void): b+ R! d# d, `2 y7 L4 @! W
{% }% W6 d# F* C4 E% Y: ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);; L+ k, B+ @9 z( R6 S
}3 r0 E1 }& v8 O# D% P; M% L
: T$ G: N4 D, n" Kvoid GPIOBankPinMuxSet(void)& i2 }7 W/ t+ [, l- |. U
{& C; ]8 Y0 |7 E# U/ i% ~0 m7 v
// DRDY ------------ GPIO6[14] -- 111
- u; o+ j' J9 X* ^( j // SPI1_CLK ------------ GPIO2[13] -- 463 O( J' f, B9 h/ P
// SPI1_SOMI------------ GPIO2[11] -- 448 Z" @3 J# q* o: N: I
// SPI1_SIMO------------ GPIO2[10] -- 43
* O* q4 ^. }0 G8 q( U4 W // SPI1_CS2 ------------ GPIO1[0] -- 17; ~1 g. I# F* s: @' l0 w3 z" ^
// SPI1_CS3 ------------ GPIO1[1] -- 18
/ X. g) ?$ e% S& I2 [; i
- o; X3 z+ T$ M; y( c0 ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 u/ \/ D& A3 H* g* p& g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. {( t N& ~6 q' @% [' p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);1 `2 I* S" I* ]7 m
, O: J1 j; W# A( M //DRDY
) w: \5 T' Q2 O% \& s% [6 k; a* F6 s GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
# Z( l' L- e- D% X6 u D // CS2,CS3
0 S8 b# w1 Z$ s1 R2 `8 H: A4 @& ? GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* T! |/ k+ S5 s GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& `4 U3 k2 Y. N. M //SIMO/ I9 |& W( S2 n
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( u' j" y, R8 { r9 q+ D. u7 n; ^
//SOMI
; j1 r ]) b; }6 A1 {$ _# M GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ f' j: w/ y) x4 f& \! B
//CLK
% R" y' U$ O- L GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 ]/ E! c9 S& P' G# a
2 D8 [7 `$ t1 g" X2 W# b' K
// LDAC U9 q+ k) ~" n% ^- A0 D. h$ ?9 E% `
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 L! u |8 l, d8 t M6 G4 X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* I D, s5 _. p5 [+ Q8 V$ r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* n/ @! }* d. W9 U$ ~; q% G0 E( v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 H5 Y5 b( t9 B: u! F$ a
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ S% l4 l7 f9 e
}
2 X# X3 B' r) m) @4 M5 W: [: ]0 P9 t' ?, q
int main(void)
7 Q8 |, M* S/ S7 [& h{, ]$ Q" f* O8 [4 J
// 外设使能
5 e/ T* T- z- _4 L3 Y PSCInit();! V; P. U, h) o* m1 W- @
& C; h z, s6 ?+ I" k) ]$ Z) o4 y
+ ^2 M) d/ S. [, p6 z8 v9 i4 O // 管脚复用配置
9 x% z+ G- }- v9 ~4 `% z8 N GPIOBankPinMuxSet();
3 `9 n3 ]; g! f3 ]/ n1 ? for(;;)* X8 @4 ]& E5 y, J/ G
{
. ]5 q; v0 j. w9 n SET_SCLK();//时钟正常输出9 ~, T" j) O+ b9 a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ I" n. }- {8 d( b/ y& U% b f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# g6 s. g6 {* b+ X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 n# W0 m2 t2 n, {- S
+ V4 g8 N+ ~5 \
delay(20);2 r: c- Z! B$ l* k* X5 S2 ?
CLR_SCLK();
2 u; {* a& f2 @. B( n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; c s+ l+ k7 P( s% v$ U+ T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 [% T5 {# p3 w$ b3 s7 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ a0 n+ g* q8 S; f: l8 q6 a: e2 P delay(20);
- l1 G% x( }9 e2 j }) p& R! [) P& b+ `. _% j u
}
- A+ {. C. l; X# {3 ] |
|