|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ I7 {0 n" @3 C* a/ m- k4 p: @void PSCInit(void)
3 J0 y/ ^% ~* i{' W- J. {4 g' k/ b4 t+ e
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# M4 K) P& I) H" ~+ W' f
}
! A0 u7 W8 ]9 d( l1 ^3 F3 i' e3 \0 D
void GPIOBankPinMuxSet(void)% `3 l, B$ q, [+ l& p
{
7 k6 w7 {& {* [; d: M) n // DRDY ------------ GPIO6[14] -- 111
9 C) R3 a1 F# i // SPI1_CLK ------------ GPIO2[13] -- 46
s& P" R+ u- n6 ?% B/ U# d2 D5 Q // SPI1_SOMI------------ GPIO2[11] -- 44- f6 O( I/ V9 X% ~7 a' @
// SPI1_SIMO------------ GPIO2[10] -- 43) [1 y* d' D2 {
// SPI1_CS2 ------------ GPIO1[0] -- 17# i' b( O; ]1 j! r0 m2 B6 k9 ~! H8 b9 Q) r
// SPI1_CS3 ------------ GPIO1[1] -- 18
! i n0 w0 k" p0 c" j$ m: b# s1 `# R5 W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* V) M5 Q0 H$ }/ F( C$ j1 ~0 n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. W$ d4 B. U& c5 w4 `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 F c4 `3 }- _0 C$ }7 b$ I9 A, P% \9 c6 ?
//DRDY" ? K9 V6 X" Q8 U! V8 A3 J
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY- x2 U/ j/ H: n# i) f/ g' t5 h, S
// CS2,CS3
c5 \9 D/ Z, N1 g$ ~ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 i. c$ N+ j: q1 q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3& b4 D( V, e2 q5 c: _6 f
//SIMO
8 H, A& [ \: Y! K' L/ l& Q GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- `0 r( X2 C3 t/ p( x //SOMI
/ q5 O8 `1 T$ [& L, ]) C GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
i' u. A) O3 B* V3 M //CLK$ k# k& S3 L) h5 f
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" Q: @$ U" R9 J- {
: s: r; J: c8 m- d3 u& F$ H
// LDAC
U( @8 [6 ^5 M+ o; N/ P GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
+ |7 p0 R; B5 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' o2 r# P- r- _0 k$ y3 [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, F- i) I& k% e; X& f: X1 | e& r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& Y$ m) K( b: a6 w& \ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" j8 h' W" ^0 J/ S}
7 M) i$ ^' ?+ B4 j* w/ Y( m) {0 B7 H, N1 k" o* _
int main(void); l) C7 e; l: K8 G: F; |# G: U
{ s6 ^. o1 C# A+ B7 [+ t
// 外设使能
6 C9 i8 |5 n4 d! v PSCInit();, b8 z$ ^& @2 F7 W
2 t& |6 I. Q5 ?
1 k- x0 ]. v1 i) k, t4 v, H. A
// 管脚复用配置
+ q, Q( J( `/ P% F4 b9 \ GPIOBankPinMuxSet();
4 K3 t* v& T. _7 ~) A' D, g$ |& E for(;;)
. }% P, n7 x2 l { b5 Q2 @, M& O2 S
SET_SCLK();//时钟正常输出# \- ]" W# E% y3 n) ]0 W( N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 d+ L7 \1 o. g6 I; b; v- @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* Q1 @* r/ }' @, \$ M* ^9 w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 @6 l& Q. y, X2 y
% M w2 \8 B3 X# w( D- _6 ] delay(20);3 f; t0 G e' C
CLR_SCLK();
1 L! S8 I, ^: E9 j$ i: N4 J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 e) c8 B0 `; E6 ]" @# g! ^+ N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
s: A! F/ B/ ^8 F$ _- A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN `7 ^' `! b' z6 x" G/ n
delay(20);
( s; R7 h" K4 W8 w }) M& k* u* }9 k
}( ]$ M% D7 y# N( @2 E
|
|