|
|
使用下面的例子代码,不能使SIMO和CS为低电平:8 H+ s: V. O% ^! k3 [6 `
void PSCInit(void); t5 V3 W" f% O8 J a: C9 r
{* s# V, j( {$ T/ t) i: E0 I1 ?
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' x; p) a ?7 a- k6 D3 [2 O
}+ K7 @: ~. t c" [7 g
: @3 L/ [6 O; m6 H9 ^void GPIOBankPinMuxSet(void)
9 j( c" N( V+ W$ Y# C) ]7 ]) ?1 o$ K{. O) b# N4 `2 s
// DRDY ------------ GPIO6[14] -- 111
# i5 t- i8 y! g // SPI1_CLK ------------ GPIO2[13] -- 46
0 L8 Y/ G" Q: P- D. w // SPI1_SOMI------------ GPIO2[11] -- 44
+ e$ H5 q! p4 K8 ~5 p# x // SPI1_SIMO------------ GPIO2[10] -- 43
0 g: U8 E5 ~! _8 K, n6 }) I // SPI1_CS2 ------------ GPIO1[0] -- 17
- i, T% i0 ^& G! |- Y' [, _/ H // SPI1_CS3 ------------ GPIO1[1] -- 186 A% P) `1 y* u) I6 J
# D6 c% ]! G3 V# |1 |! _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" k# j9 J( Q7 ~7 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);6 p( h& P. v8 z( C) m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 S8 ^: Y8 y) b* X( [, I
6 L, d7 y% S0 u0 S
//DRDY) C# K8 L0 W! G: G/ ]
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ s4 |7 }2 i# V. D
// CS2,CS3- J# Z+ G4 q6 `1 Y7 w" @1 x
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 h* c' A' r& n! B1 c GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: c8 E8 L: v e) m' z //SIMO4 f; k( ]" v( R# t5 z* t0 i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO' W4 s* z! b+ b% f+ p! `
//SOMI% u0 v- N" c8 [8 h' \% b( b
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
& H" U/ O1 y w+ p4 A/ v4 E //CLK9 a7 ]' I7 d, V# z# ?
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 k W% F) H+ F( j
! l7 T) N+ W& ? h4 w1 w8 d
// LDAC8 I8 i2 k8 e9 G3 r* p/ r
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK; B" k& }5 v3 u& c- V. Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* t. e# ` m4 _& J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 o; ?; E: x, R- h/ a
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. Y( c0 g% K5 v$ t6 x+ W: p' m7 P
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* Z6 |/ u. \7 H# G# U# l}
$ L b9 P& e" F( M6 u% F) w" I. `
int main(void)2 a$ i2 G8 X9 l! O1 K4 m0 v5 a
{
+ M. ~2 A9 R/ d' D2 J. [ // 外设使能- \ U7 P, A2 z: t
PSCInit();
4 u& _ {$ I; j1 p) W: b1 U, c! h! p6 q
6 I+ q3 a+ q8 s& n( y0 l. j // 管脚复用配置8 Y7 Q. T4 U# M6 [: J$ r
GPIOBankPinMuxSet();4 C1 j! ~/ [6 U: e0 L8 [' @8 k
for(;;)5 |$ x3 e' w# K
{- o* a2 F8 d( ~% E% ?0 K
SET_SCLK();//时钟正常输出1 ?6 b: Z, u8 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 D. |6 x% }0 z" s# |4 n, S" P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 x- K! ~1 N: C8 Q _7 p4 U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 A9 C& B+ j/ z8 r5 Q
6 C7 P9 ~( w: ^) v+ ^
delay(20);1 v4 ^9 B. P) D" p1 ^3 {- G* z
CLR_SCLK();
' \9 A6 a: C" ?, I3 q% Z! | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
2 H2 H7 d4 S: f8 c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- W, ~ O; J1 e! x: _ K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; _0 y' N+ W. o1 A+ X- a* e delay(20);0 I( ~, t, H& J# p+ b
}( h; |' R- S) @3 V5 U$ y; ]
}/ O# P# c2 v7 [) {
|
|