|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' R0 _3 U. y$ _8 x5 z
void PSCInit(void)1 u/ l! K4 S, E# X3 d9 p& Y- ?4 H
{
9 [& H, s1 z; ?: m; K( e' i1 \ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);) f0 A/ D# h" [5 ^6 u
}
" i: V# D" e# E1 C6 }; f
! b5 a& }3 E f( a- c- N. d5 g7 gvoid GPIOBankPinMuxSet(void)
+ a) r6 X& A$ H- C{+ e8 L+ h5 c q; B6 h' m3 h5 V. m1 l
// DRDY ------------ GPIO6[14] -- 111
: _! h1 n8 o) V2 Z5 F5 ]7 [, ~; H5 F // SPI1_CLK ------------ GPIO2[13] -- 46
( i" ~8 ~" _) F) Y // SPI1_SOMI------------ GPIO2[11] -- 44, z6 ^$ l, I1 ~0 @) M
// SPI1_SIMO------------ GPIO2[10] -- 43
0 V6 I: f1 Q' n5 D2 m/ D( p // SPI1_CS2 ------------ GPIO1[0] -- 17$ z6 q; Q- R5 M( G. l/ k& E7 T& `
// SPI1_CS3 ------------ GPIO1[1] -- 18
- S: U9 r, ~# {$ o3 k3 J7 l7 t/ ]" E; \/ m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- O+ y5 N$ @. f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( Z" z1 z1 [! B) o2 b, i! G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 j1 h; g' @5 ^
+ b2 v$ s, R( L2 s! ?& i7 P //DRDY" \/ `6 B( e& X2 V
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. C# I' X# x. I2 d // CS2,CS37 n8 j& M5 C* d" R. x- b: `9 ^! ?
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 _& N* A4 A- S: P" v/ i8 t/ v GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ o# l' o* A! f$ } //SIMO9 [6 H) q6 k* e; {2 W
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" k5 r ], x4 i/ s; T l
//SOMI1 W3 c5 Q7 R7 D' ]! V
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ ^4 i4 m; J' t //CLK
- }' b* W4 V8 x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# l7 X; \4 S2 G3 E5 ], r5 v& L; O5 s z3 _2 Q
// LDAC
* q2 a" L8 }0 Z/ D, x GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 H6 x4 j7 E1 [3 F' p) s2 I# N* l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 h. O: X9 n: q7 g8 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; Y" B2 V% I/ }7 b2 h+ s0 @' Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3& {8 {9 k+ S. E- \' w
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY, h: N( M! G9 L4 i/ z4 J( ?
}
4 u: k3 {4 R7 Z4 v" w0 y! E8 I% W" q0 w4 ]; p3 l
int main(void)
+ p. R7 [7 i P/ f5 E{9 a! ^+ u( S6 L# C
// 外设使能
, X1 J) N' f4 E PSCInit();
{4 C: n, c. C* ~: a4 O2 C7 K9 K0 n% f$ F
9 c+ V+ D4 y5 X // 管脚复用配置( p; u. E7 ], ^9 M+ t
GPIOBankPinMuxSet();
+ K' c3 r Q6 s for(;;)5 n; Y3 r* {. H$ @9 o2 B8 ?
{
! A& R6 J2 ~3 C/ I% w, { SET_SCLK();//时钟正常输出
" U, O) c$ Y+ r/ C$ B$ Y1 i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ @6 Q# ^- M/ t+ v" }( m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3% U) x% }# }3 g: @& D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( i. w9 ]# L7 R
. [) E- f+ @# R _ delay(20);' J7 b. N5 X: w
CLR_SCLK();
/ k- d U, K& {; I* j2 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 y5 `. X r% t$ [1 h9 z( G$ b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
! ~. v, @% s' o+ J- `" q0 w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& h" t _" M/ y% H! z9 C, b delay(20);+ z l L$ _6 e
}9 W; ^4 ^4 @& I3 g
}) l2 ^7 {. ]/ s, n6 {1 Q. }2 K
|
|