|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( M" X" P0 l, a) K" J" bvoid PSCInit(void)
- _9 b2 X8 B6 k8 d& v7 a; j{% L) i! L/ X( D
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
* w" w5 y }2 s2 n! j# S}3 _; r4 F* l' U; A* q
]) Y3 X* F q* ?) f6 ?5 u+ h+ D
void GPIOBankPinMuxSet(void)
: u. o1 }/ ]5 X{
) [, w1 v0 k, w' m% k# i // DRDY ------------ GPIO6[14] -- 111
3 `+ I% n- t: f; e: S, N // SPI1_CLK ------------ GPIO2[13] -- 46
& z$ t1 }' j: S' U7 A // SPI1_SOMI------------ GPIO2[11] -- 44' J3 w* d: @: o. |3 `5 J
// SPI1_SIMO------------ GPIO2[10] -- 43. L+ Z9 ^1 a5 X+ s4 x6 o& e
// SPI1_CS2 ------------ GPIO1[0] -- 17$ a- ^. {/ U& T$ g5 N
// SPI1_CS3 ------------ GPIO1[1] -- 18 q5 S1 Y+ W8 H+ `
+ _" E# W3 W3 h5 ^) T! s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* y: J4 t, T( w7 U7 C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);, u+ o) W8 m/ t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- a7 `0 t0 z! ~6 O0 ~! S
& n( `; e7 Q, F5 }! x, K //DRDY
5 B" M2 |" V; I; D9 a" o5 ? GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; [) p4 Y% f) G- [; c1 y3 q // CS2,CS3
$ X6 y5 j% p' H2 [- w9 U) O C5 [/ l. [ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
$ d/ w! A @) C' z+ d% l9 F H GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* ?0 l/ b8 ^0 X+ \; D* r //SIMO B% @% t' T7 p7 T4 L1 C! ]3 i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
# k8 x! X' f3 a7 y6 X //SOMI
/ q: D) j0 i O" u5 ~ K GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; f* f+ C1 C3 d) ]3 Z
//CLK7 _! f; Z) d2 |, v) I8 [- V6 F
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' Q i. z: ?; t, [! a6 k
Y0 Z* E. p: a v // LDAC
% p/ ^" c5 h" G3 n4 v1 j GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ E( v/ L, ~1 d6 P! F, @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
B6 q+ H1 _( i3 p3 Y/ j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) v0 ?8 o; `$ F, T- T1 j- m) \# d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
- X3 {, I; `: @- M; d- G" e0 p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. ?+ F- h# X7 K; D+ g7 b+ o. a- R% p
}' N- T v, z( [. C0 W" F4 R
8 V' p* s) X Kint main(void)
4 c' t) h+ `3 K- d8 P$ m% o$ q{: B7 U: N7 _+ d
// 外设使能* Z. K: }% a- ]7 }. L8 ?, Z1 b
PSCInit();" J& r8 E" ~/ `3 l9 F0 b7 @
! L+ H A% b% m9 O; Q
I0 [0 e. F, w: v! J* U
// 管脚复用配置4 k k% i3 A2 E& M& c7 ~! g
GPIOBankPinMuxSet();" A: ~5 B" b0 Q, S) W, d
for(;;)
8 o9 x% B- t( Q% M2 w& l {
- X! {! M+ D2 W4 J) @* W, D) {. F SET_SCLK();//时钟正常输出5 j0 _* u( ^+ a! M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; b9 c- N- k3 I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( _ R$ g: A' w V/ T6 J8 P) { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 D3 d% P h8 G0 _3 C6 V$ m/ k5 i: C6 e8 I# i+ D9 e
delay(20);. M2 h' V+ i5 z
CLR_SCLK();$ W/ s) j* \9 X6 y+ ~9 g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
E( G( @; w$ A; \5 T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3" n C# N. l) H1 R/ h4 s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, ]' T2 N6 Y, [. j* i, U8 d delay(20);1 q+ i4 @! |& L" v5 f( S1 H0 e
}
3 Z- k4 e) r8 s K3 n7 D8 I}
5 |' t6 s* U: \4 A: n" V |
|