|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 l/ p8 O" L+ \8 T9 pvoid PSCInit(void)# s. i* ~5 h2 W1 G) q3 s3 g
{
) v7 r6 O5 U; l6 r- j PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 P. s# @( r- e}4 Z+ q9 D# |" y0 J2 C9 ^( {# @1 w
+ b/ u6 N9 x5 Kvoid GPIOBankPinMuxSet(void)
" F0 T2 w7 S. N: h7 P{' f% S) D) n/ J Z
// DRDY ------------ GPIO6[14] -- 111
4 \) H" d7 F* g7 r // SPI1_CLK ------------ GPIO2[13] -- 46
0 `- k* |; g! F6 l // SPI1_SOMI------------ GPIO2[11] -- 44
' g4 T4 D' r3 |/ F5 g3 Z // SPI1_SIMO------------ GPIO2[10] -- 43# f' a' ~4 ]- [( T' n4 M
// SPI1_CS2 ------------ GPIO1[0] -- 17# d. }* \; S6 z' V0 J6 P2 L- k
// SPI1_CS3 ------------ GPIO1[1] -- 18
2 U: G( a$ p) s W! W# }7 Z- {9 k) s- ?) g2 b
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, w3 o2 H1 a* j2 P+ L/ I/ a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ I7 [8 B K( s# l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
* x* Y8 F. f' z! y4 E; \5 _/ F2 P$ i& O0 Q: [( Q
//DRDY9 R1 }' }. S8 {" S4 N8 W+ g
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
: p! d% H2 g. [$ }( X+ K // CS2,CS3# b) R( c; I) `; H9 |9 G7 [$ l
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
$ [& Y1 m$ ^4 a M5 Y0 _# F GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS34 P/ m8 H, s$ R, m
//SIMO9 D! F! b0 l' K% e
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 d4 h8 C: u1 S. ~. G! e
//SOMI8 o& V6 ]3 F5 y+ ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
" Z2 w" f# M2 w: \ //CLK# U) h! h# I. o: D. w( ^
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! E$ `' L& C* [* i8 a
, @% G& c: _5 L
// LDAC
( K" } S9 T7 w5 S( L+ } GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 m! h- M7 W! p& `* h" q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, i0 v( j2 p* B* d+ D( E$ X1 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 n) R( c% L& [' k5 ?$ ~( S
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* q% J9 O/ n& i( Z* u, \
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ i: F2 f" H( n9 W: N
}
0 t8 G% o) G4 ?" d& ]4 u
5 s7 s5 o4 B% G% Z1 ~& L% o3 }int main(void)' [0 g$ C1 x b6 F2 O+ f; @6 x4 K" I! d
{- P8 T2 P" S, E, w8 R# \
// 外设使能$ Z* r. ~8 ^* B# B
PSCInit();
, y2 }3 Q8 a9 p& \/ c
) U3 f/ A( H, w/ P/ l ; ], P: r2 D- B2 e; W ?6 Q/ k
// 管脚复用配置
+ j: A1 z5 n( A GPIOBankPinMuxSet();8 w0 Q. L6 |. r: F0 f# G
for(;;)
; L- N3 e2 O2 j+ G: D9 [ {
: f1 q8 `. y( p4 K SET_SCLK();//时钟正常输出
; d6 J0 T9 y T& q$ | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, i( h# ?: B* ~& _( R0 t0 K8 g) _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
1 q* r; Z2 [1 W/ z* ]/ }2 O0 [6 g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; d9 Y+ k: y# j6 s8 e- j# K
7 |2 ]5 R# @; c# [& e: A8 T delay(20);2 r O0 j+ `4 D8 i- J
CLR_SCLK();& o* W: X4 R. A& l0 l j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ D/ U# m2 U7 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& k5 g8 q! {' x. B3 I9 Y- i4 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ J5 s& \; N' w delay(20);& ]' R/ ^" W0 O* m/ \, @. z+ N4 a
}( V6 g7 w' W; f1 H8 \& N
}
) g# g' e# R6 R9 z, v* J- p |
|