|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. K) l& L3 C: R! U( ivoid PSCInit(void)- N. z, W) z w! p, v: q4 R
{
$ k: U$ u3 J! K$ M, q PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 t3 A( R( ]( B8 L$ D
}5 u7 q* \3 j" k: N& g( d O" |8 F
" O, y ^, c( m q0 {- O
void GPIOBankPinMuxSet(void) z9 c& `' Q1 ]' V; y; a3 A7 v
{
! l: B7 P! _) C$ | // DRDY ------------ GPIO6[14] -- 111
( M8 v7 e; P8 i0 ? // SPI1_CLK ------------ GPIO2[13] -- 46" b# ~+ z9 j; `* u7 C9 C7 z# ]( F: O; P
// SPI1_SOMI------------ GPIO2[11] -- 44- W2 f, i3 J' H. a1 |
// SPI1_SIMO------------ GPIO2[10] -- 43
6 {) c8 z. s. B. V# J // SPI1_CS2 ------------ GPIO1[0] -- 17
2 y. H4 ^: W6 b9 U // SPI1_CS3 ------------ GPIO1[1] -- 18 R5 p- h" W w9 N, O6 v6 I
5 Z0 p" `; W) e/ F- N0 G0 O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 q3 D. b1 _ Z& _0 m4 u& _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; o4 Z% a7 w6 A+ \+ Z) @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);. V, I, L+ b$ z* ^1 `9 O% p$ L
0 z7 X0 R" F, e: q9 B9 V
//DRDY j/ D& a) B1 u- U' |1 q0 y
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* B6 z/ k+ h6 v6 T% p
// CS2,CS38 z& g+ w2 t% S5 L5 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 }" [4 X* E g J5 k6 X7 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS34 b) k+ P& _" @
//SIMO; `% i$ o" r. G6 q( S& \9 b, z" i+ i: u i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
* L4 U& ^; A6 x" d6 N4 G //SOMI
: D: Z- u8 C9 D9 p GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% _3 V E8 } Y! b* F
//CLK4 o0 d. G- d; i: D+ D1 I# [0 a* t
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 @5 {3 ^" u5 a9 _7 @- s
$ L8 J8 m0 Y6 P: A3 Q/ T
// LDAC
" c! R7 i! q6 M) c$ P+ U, h) k GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' p1 T! u: t. b0 s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ _0 V+ {' H Z: S" m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# O8 m5 h0 @! \/ i, \$ \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ v. G& L7 w- d% D GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 n2 E, @: P9 n4 s* D
}0 B$ @, b' ]& B' g: _; b
1 y9 j6 D' [; Q# x9 U6 S1 E4 Hint main(void)2 V; \; z$ m& @7 G: l8 m$ [# W1 O3 [
{
7 h' ?7 W2 \% x. C0 B, ~7 j. w // 外设使能
- _3 C" a9 P; d6 H; K* ?. } PSCInit(); C: n. a* h `/ H2 @& ]
+ ]) G' \% V( b0 a1 y
) J# |5 n! G4 Y6 F // 管脚复用配置5 Y# j8 Y6 D$ I$ c2 n. [1 b0 [
GPIOBankPinMuxSet();
/ P, m" x" q& I for(;;) S4 d/ e Z/ y! V/ g* _8 ]
{
# e' k- E( l) Z2 W: `: H SET_SCLK();//时钟正常输出
" e; [7 G) M7 S: l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' j4 Y9 `8 D4 [2 }- x$ m; i0 x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* q9 `' r& @7 |# U. V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) O+ b2 o) g# g5 P
/ U" ^3 F' l h2 a delay(20);
$ d4 l& t! i1 p$ H CLR_SCLK();
) ~5 U; N4 {+ u; X* E5 d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 P5 ~) v% ^. n$ p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ n( Y& U7 ~& r2 `1 ?3 Z! K0 S, y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 A4 V) V) k z# H% i: B: y
delay(20);
: j. i. K% `! c/ V) i }. M4 m( D* x" C! a' s
}
! u* Q# _' u2 b9 v: R; I; {7 A |
|