|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# `/ W! d1 F" g8 `; @void PSCInit(void)
4 I9 f8 P8 {; f3 M1 [{
/ a& D* v- P9 }1 r PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 |" W O' ^1 l _$ G8 z}! c/ m5 y# B0 A9 D
$ B7 u" n+ P: O4 g/ V& `- Ivoid GPIOBankPinMuxSet(void)
3 U) |* L ~( c3 N{
% R2 Z' [. v" C1 _ // DRDY ------------ GPIO6[14] -- 111- x6 N" c# i/ Z, g' d+ c
// SPI1_CLK ------------ GPIO2[13] -- 46
* }" _. }$ K) h4 l/ z9 a* [8 N // SPI1_SOMI------------ GPIO2[11] -- 447 o% N0 v& ]' x9 ?+ O0 f+ d
// SPI1_SIMO------------ GPIO2[10] -- 437 s5 S( r% u. C+ x+ Z) z6 U* X
// SPI1_CS2 ------------ GPIO1[0] -- 17
/ N6 p) }* D \7 ` // SPI1_CS3 ------------ GPIO1[1] -- 18
- H2 n9 B+ z& z5 c& x' C$ z$ e! ^+ N' C2 c9 s4 h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 k, h* U u7 Y- j- O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! C$ z8 g5 N' K& h; ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' O. n! ?5 U$ |: s" z
# ?) K i2 C2 q$ v! O //DRDY
, ^: z; H6 `. X) ~+ u% \ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY1 {6 c' ^; N- K2 `( Z4 Y! j* j
// CS2,CS3
# {& X$ T2 h; t' r6 y/ ` GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2( }* O0 f- v) D7 c. j/ c( n, e
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) m% a9 R8 k4 ]7 r( `& F) i- a: n4 {
//SIMO
) a: }& m! H& h) I+ U GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
; {$ B" i2 @2 F' f3 c" A q //SOMI6 f0 V m" B2 X1 M% a* D8 i
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ l2 @4 q' d* e" G //CLK5 g5 t5 S8 Z1 d d/ X6 y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: {; w5 V# ]" E: {$ [+ K0 H4 z- ` Z n; W/ `* d$ j
// LDAC
3 I: z1 C8 o% s: j GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 v! ] x9 R3 \- ]- _! m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ \( P& ^8 t+ x0 l4 {' C. K) G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) [+ m5 I& Z% {# q3 z+ d9 d" } GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
$ ^1 I$ h+ a4 B, t, D P GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
7 ^+ x! j4 v' V# o* E' w}8 O& Y1 d" X/ i3 ?5 j6 M6 c) m
a6 a" \! C+ x+ I/ Lint main(void)$ d; O! v% S! p; p
{
0 s! m6 W( o, h( F // 外设使能
0 y1 Z3 I7 Q, o3 Y6 r PSCInit();( Y4 M5 L( F& v! E! L) {' z2 ?
3 T* B0 J# ~6 L: f: K1 \
$ R% O+ ~+ z+ L" F) G3 s
// 管脚复用配置! `. ?! F" w4 S# o( w( D
GPIOBankPinMuxSet();! Z) }) j% ]( [- ]9 M- d( M: L$ S
for(;;)
! E0 X4 f1 B! C+ u9 {( f0 W {
6 R- c5 o8 r% a+ e p; a2 L( Y: r SET_SCLK();//时钟正常输出
* z. a# H- j& m3 u GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 a& i% m( w7 G; Z- Q) x- A" C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" X& c9 u! ^* b! |2 N6 b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, `+ }3 ]5 y* f2 l8 _( l9 l" U0 d
2 \ b( `9 ]1 g* G+ m
delay(20);
, e( w5 m: k7 F; Z2 }7 d CLR_SCLK();
' R) S1 F5 d1 m8 U6 t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! W' w; _" I: h9 B: H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3: q" x- p5 b' G: y/ B9 B/ k- }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ g' q2 L0 X2 F5 S; d- E! C3 P delay(20);
% d) k( x" M9 y# F/ _5 F2 o }
" ^! R, _7 s0 d7 k6 M, ]}
/ U8 G r! ?: e/ v! X |
|