|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
! n! ^$ J0 h' Q' {5 a. [! d; Y. _void PSCInit(void)
, p5 V+ ?" K& j+ B: h5 `{
, _" |7 I" I" {6 u PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);/ J/ s$ s r; _7 [# C8 Q
}
7 a8 }4 D! E; c
7 u M. S" k) t. Q5 Q7 t! Tvoid GPIOBankPinMuxSet(void); g3 y- Z3 P+ S' L* O
{7 @' S9 m6 E* ^2 ^3 G0 G/ @" E
// DRDY ------------ GPIO6[14] -- 111" B, h. m: R1 A. S( v) G. c
// SPI1_CLK ------------ GPIO2[13] -- 46
* y3 J& m7 t4 U1 \; d5 f2 [9 i* l( X // SPI1_SOMI------------ GPIO2[11] -- 44" ~: n9 p* G2 m5 @% U- H& r
// SPI1_SIMO------------ GPIO2[10] -- 43
% A6 E7 A2 ?5 J) M7 p1 `# Q // SPI1_CS2 ------------ GPIO1[0] -- 17$ c& V4 K0 `: ` |& }& L
// SPI1_CS3 ------------ GPIO1[1] -- 18$ }! V3 v1 Z3 o5 r- A% o
- S" m9 C" }7 S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- A$ x8 ^8 N+ f* f+ N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" Z/ i8 u% n% a1 k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% S+ w( Z0 @- m( D0 `
% j% L6 F5 y d+ |9 G //DRDY
7 I f: d4 t- Q3 v$ I5 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY1 e, l5 }2 k0 b' _
// CS2,CS3% F5 J# r; m4 G. i8 w4 B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# f; U) w3 {0 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
- |, m; o, A7 d3 R# ^ //SIMO7 o8 V* I. A6 X- t
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO u6 o9 u" O. [1 K6 T ^
//SOMI
% O8 j8 T/ V) Z GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI7 L- l0 ?+ ?/ f* I+ R0 ^0 b
//CLK5 A8 p6 q1 Q2 O
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
0 e1 \9 M' [, Z9 x* Z! |; ~& N7 U" F' C
// LDAC
$ T) S2 I( k1 \& [, a& Q GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 {/ ?- v7 r( v: S
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 y/ \7 e, K% K/ M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 k- S- D# H; _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 E) {: K5 F% D/ K Y& N
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 b8 m" V7 `6 P- h, Z) s' P& _
}
" ~+ R* Q' J+ D) k$ q0 Y3 q3 h- ]$ Q
int main(void)
" }9 [: k, Z6 k# r{9 o- ]' L' a. o$ J) Q2 b
// 外设使能8 M4 Z) ~; o% Y0 T Q# Q# M1 E; M# x
PSCInit();
7 H0 E; {( p1 q w8 P
$ @9 D u% B. y/ \1 X4 t
H k+ [/ X2 p Y% U // 管脚复用配置' l8 X- L; j8 T
GPIOBankPinMuxSet();% D( J6 P O' K, t; ?$ @* M
for(;;)* x, K$ x; Z( a
{* r/ t2 M- b% l& j g# S
SET_SCLK();//时钟正常输出- b; X! C2 r0 X, H1 X* F4 e2 T8 A9 x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) S3 a% Y, b5 ^8 i; Z; d6 N9 [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 |. W. Y8 T, R) q; F- e2 J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ k$ d" B6 k% v# B1 O
& w/ y% H. }: X+ ?9 N delay(20);
* t5 C6 |* D5 s+ D' ] CLR_SCLK();
. a2 K: j6 `) X+ ~& X, y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. y! p8 m* a# J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ ?, N! ]$ q/ R8 m7 `! u9 K$ B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" B3 x% c, i& \. H4 ~; c
delay(20);
% f: @5 Y/ g% J# s( [7 k8 P% P }% Q; T$ s h; H
}% R+ p2 x! l4 b; q+ v. L P. E
|
|