|
使用下面的例子代码,不能使SIMO和CS为低电平:! O. w0 J: ~; j9 ^" c9 q
void PSCInit(void)
# L% w1 |6 R" z( V* y8 w2 i{$ ?3 T( L0 \- V w/ H
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% C1 w. \7 l. ^6 @
}
6 R, o) _! {6 X4 F( Y3 D, W. J6 b
6 y0 w% x4 q/ v* ~2 d) P3 Bvoid GPIOBankPinMuxSet(void)& ` t7 I, {2 F8 o0 L5 R4 _
{. A$ h6 V6 A8 Y- M' d( y5 {
// DRDY ------------ GPIO6[14] -- 111
# Z4 H$ R9 T2 u4 ~, z* h: O // SPI1_CLK ------------ GPIO2[13] -- 46
# Q8 d1 x0 `/ A5 {* G! G2 a // SPI1_SOMI------------ GPIO2[11] -- 448 j% ^- y) v% v# {: `
// SPI1_SIMO------------ GPIO2[10] -- 43; @8 ^2 g/ d W5 y2 ^2 ~
// SPI1_CS2 ------------ GPIO1[0] -- 17
/ q! _# @: W/ t: L% \: ] // SPI1_CS3 ------------ GPIO1[1] -- 18
6 r: L( p5 s# Z5 j9 g6 A* ]
8 x5 M) `" m4 Y, |0 T: O" G- | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, W3 U- K: j6 {* i6 \+ |, p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' E0 E6 M4 p: W* q' u# B6 Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 w% ^5 n( ^* W! d L e
$ b& b% |5 h' k0 I( k //DRDY
) P8 y: x% H4 s4 h* W. V' w GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 V: j% }1 o: m. T6 F- h) r // CS2,CS3
4 w9 ~0 y2 y% T4 k GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! T2 u: v; S: t$ h( i8 E GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
; y+ w% C9 `* z9 j: F1 F: x //SIMO. f# E1 S1 |* i% s. H
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
5 y& J5 j. G! z% O1 V //SOMI
. K' ~. P# J/ o+ ~* U! \( C GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI) u& d' \# R1 t R4 |9 I9 d
//CLK3 I8 N- D: O% A4 _7 m7 x4 x$ ~1 W9 n
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK0 O" T2 Q8 e$ q* V
8 F$ `! `) [( b5 o3 |, j) X // LDAC- Q/ Y- G8 c; Y, P& p
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% F4 E h% A; `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; }+ U# f7 u! t: T" G' {( F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) d2 }' T, L2 ?! r" a+ t! v: K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 j+ o' ?# l7 H+ o u s GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ D# u* Z# ^/ I1 n! q}
e m* i8 I8 m4 V* l
6 ?( @9 s/ {/ c2 t! K+ tint main(void)2 k8 X" z2 m; c1 r8 ?3 n! j& n: f
{
4 G! S3 C: p a! @* u // 外设使能8 _0 e' Y. W- D. j E2 g/ N0 E- N/ k
PSCInit();& G/ j y6 c# b: d) y& e
/ ^' k6 s( m* d+ G8 `: e3 L
/ h, w0 s' _2 I" ?: ]9 e
// 管脚复用配置
7 A0 x9 g& ^3 a GPIOBankPinMuxSet();+ Z6 T6 P1 Z, c) d4 {
for(;;)3 a% X8 r4 T2 W$ I. W
{! h# N* S& s5 q* a) ?7 {# @5 Z
SET_SCLK();//时钟正常输出5 `* V1 r! U' @) X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ W' u7 t' \3 O0 Y# T B6 @4 ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
! K, v7 y8 v2 }/ A0 ]9 W ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 q- _4 G5 N& I, w; ?- X O, g
6 D' }! a1 ?% m delay(20);7 c+ S* [4 Z" E2 \+ W
CLR_SCLK();1 `1 C: K7 }. B/ p" d: O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
F3 M- Z8 r+ ^' Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 i7 q7 x2 \# G0 L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' Y m' y9 Z' b4 X
delay(20);# c K% F" z5 p. I; K# J z
}
. L* P/ x/ w) f% N" ]}
5 S3 U6 Y- V9 U5 D" R3 n |
|