|
|
使用下面的例子代码,不能使SIMO和CS为低电平:* d$ x2 T& }% B. H! F
void PSCInit(void)
8 ^' _8 i- U* N! r$ [/ S{
* {7 b6 O% |/ I- J; e/ V$ s1 W PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 `4 P1 f8 J7 W! \9 d
}! o1 m8 M& k u! |0 z
% H+ W3 X& w' H; w. J! q a7 B
void GPIOBankPinMuxSet(void)8 B; K3 H! X8 H6 h
{ n" ?1 F! ~4 ]6 `
// DRDY ------------ GPIO6[14] -- 111# q% W! p, }1 S
// SPI1_CLK ------------ GPIO2[13] -- 46
X- d; Y- A$ e, o3 z // SPI1_SOMI------------ GPIO2[11] -- 44
( t+ v+ o% N8 u- Q3 E // SPI1_SIMO------------ GPIO2[10] -- 43( ?$ _3 \8 v4 J# p& L' e
// SPI1_CS2 ------------ GPIO1[0] -- 17
J* w3 b/ g* m9 S) j2 z( x // SPI1_CS3 ------------ GPIO1[1] -- 18
N& v3 F: E# d$ ?8 F6 q
% N: k/ a0 S" V6 g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. I2 l; e$ r q3 p1 Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; V! { y8 T7 s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 q7 u+ c6 n* D( ^0 B. T( `/ P J; t* ~; ^: s
//DRDY; O7 ]* M0 }8 O% Y. x# j
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY: V/ {$ b2 B1 l1 ~
// CS2,CS3" \+ E8 @$ h: A! V+ e
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ h, ~1 L& p& I GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' k \$ p7 O" K% B6 X8 i" _* ` //SIMO$ l" S$ L4 D: y8 L
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
~. r* o' {' M //SOMI* ]+ b) Z2 T, |! x5 g
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 {$ b. T2 m! B' U9 x4 z+ w //CLK2 w3 Q; I8 _: \! z
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ J! y8 O, p% x r# o
* D% i8 ? Y* W/ A // LDAC! V% G: z" ~% J. [0 S* Y! T
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. F% X% Q |7 b# W# z+ w* R2 u$ q) W8 O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 q f! r" r' Q$ R# J8 F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, D: R* G- B1 r) j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 L6 M8 ^7 `/ t7 \3 U6 B, ] GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" R! ~' R% r% V" c: W& N
}
2 B- k4 P, L' ~- w- v" F2 T3 d+ {: ~9 ^# @2 G1 d
int main(void)
1 H' L; [; `$ ~! G% w{
5 |# Y# l5 {" Y3 a // 外设使能
2 m) W& j) s6 j, h* b% G PSCInit();" [+ z. e, V* i( ^) l& C7 Q) m x
% [- h/ s$ ^' t+ d+ ^3 S
4 ?; |3 e8 U* X6 i9 T% Z // 管脚复用配置! N- Q( t, p7 a: j0 h! S- q0 I
GPIOBankPinMuxSet();
* x( L3 d$ A0 Q5 X for(;;)
0 `5 b# r. s1 ~5 G4 q0 j! v4 N {- U1 f N3 H u" n/ W# Q
SET_SCLK();//时钟正常输出
( i, D! E$ L3 z: }5 w2 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 Z7 m0 U5 s. C( s5 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' ?' h3 M, c9 n' m& M- c" u( a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' |# \, ?- q7 U( \
5 Z4 ?: y9 X- z" J
delay(20);
. B5 e$ c7 j! P( b/ {- y4 S) V1 d CLR_SCLK();1 j( ?8 t& L! d, s6 q) x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 ?; Q# t8 P( D! `; Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS39 ?8 o1 U. j: N5 n7 T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( D; @3 k0 ^% \& y; A1 f delay(20);" r7 k. U r( C6 w. l1 V, n' g
}
# P) _6 j0 C; ~8 |}
( }& Z' P" J9 O8 Y |
|