|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 a" n4 k: \% j+ Y! y3 R
void PSCInit(void)2 M4 C7 w. A% \( |) g$ {2 w
{
4 c; M1 ?6 A: x& ~! X+ j PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' [5 W5 t0 u: h! I- Z* M
}
+ y2 `0 S/ k- ]) M
$ p* m% |. l% x' T( M& }void GPIOBankPinMuxSet(void): ^% C- B" A% Q9 B
{, Y/ b3 H6 @9 j7 C' [
// DRDY ------------ GPIO6[14] -- 111) t' g/ c& M) i( X0 [7 J; a9 b& \, W# t
// SPI1_CLK ------------ GPIO2[13] -- 46: x1 y3 M0 D7 D7 T1 X
// SPI1_SOMI------------ GPIO2[11] -- 44
' t4 b2 o' |# M3 f // SPI1_SIMO------------ GPIO2[10] -- 43# Q3 q L. U; w% }3 r/ p" a2 ^
// SPI1_CS2 ------------ GPIO1[0] -- 178 @4 A% O* \$ ?9 I/ y1 g5 l0 l
// SPI1_CS3 ------------ GPIO1[1] -- 18* U0 N$ q5 C- Y. T
f6 R5 t( z+ r) p# a& j' H U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% r/ a0 Y" j) l9 E; p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" \1 w9 V5 q2 k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);2 R8 ^& K- W6 R& ?
; O! g$ h. e/ U% Z# o N l //DRDY/ _1 ?6 Y0 q8 }
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
+ {: [8 w8 H/ L* W8 Y1 O // CS2,CS3$ x( H, z0 O$ s3 x
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
9 Z7 q0 k7 A8 ^2 c' g: h8 g. O8 [0 Y GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 U. t5 ?5 ~9 S; [' x9 M //SIMO
2 q1 t5 x# I+ i& O G GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ u7 d; S1 m- ]0 H8 y //SOMI% d) p6 q9 b1 ]* q Q' t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 @% D7 R; w0 W# Z4 g. j$ [2 X //CLK3 q7 g' H" i5 L
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 L3 J2 `9 t# g
; M% ?' V+ ]( G4 u
// LDAC
6 q' }4 @7 \ n GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' ^; M3 z9 i2 n" @7 | b* H* r2 l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 k0 D! P$ _" @5 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( S/ h8 ]7 R: V7 B1 {0 x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 ?# C) `- B0 o" u GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& }2 @9 _: i1 C" z: f}7 | r; l; q0 ^% g& f* C+ N2 R/ m
1 c8 ^& j# V% r. i
int main(void)% S7 s a/ g2 ^
{
& {% T0 O, ?3 Y1 R% E // 外设使能
) c F7 N8 e" W( P% W PSCInit(); D7 @4 M9 d$ j9 A( Q" l- ]
/ I: z! u" ^% @4 s5 g9 s
0 S! B, l3 C1 i // 管脚复用配置
( N; {4 p+ }+ l2 q* x GPIOBankPinMuxSet();
) b/ _. T1 C3 ]1 l3 w for(;;)# F/ n5 |1 L5 _' Z+ G( ]
{9 c* l, D* `+ T
SET_SCLK();//时钟正常输出* T; P" t' {: j& [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ m5 {. K# U3 X+ i! a. q" d" w3 @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 m& [/ b4 e* a/ l9 u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 M: ~7 m) V3 y' p# H& w7 R. l$ W- ~" x8 Z
delay(20);
* j: v# V; Q$ o0 Q CLR_SCLK();
- V" U+ Q4 h2 T3 s5 R$ l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 K; R1 S2 @. N$ ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
. P9 d" B# Z' J: I0 V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ ^( M& n8 h8 d$ ]) p5 G delay(20);5 l2 j) ], s' ^1 N. l: j
}
( L( M- |) }. P" v. K, S8 {& B4 b) m}
. v; J& A9 f; A6 v" J0 O" p |
|