|
使用下面的例子代码,不能使SIMO和CS为低电平:+ p; b) s3 w5 [# f
void PSCInit(void)2 z7 l1 ~( C7 I6 C6 y
{( u D6 n: ~/ K: D
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);$ G; V& }/ H/ y% ~+ ?) n
}5 Y( v# o! y" g' d$ h: ~
5 s! _5 X# ^7 I, t1 V- ^4 r9 d. I* A" f
void GPIOBankPinMuxSet(void)
7 H8 t( y4 [* T) @{
1 ]9 S' w, q2 v' O# ` // DRDY ------------ GPIO6[14] -- 1112 p" A5 T. T3 G9 m- t/ o8 q
// SPI1_CLK ------------ GPIO2[13] -- 46
, f w% \& ^# V% R // SPI1_SOMI------------ GPIO2[11] -- 44/ P& A: k0 B: O5 Z* f1 B7 \
// SPI1_SIMO------------ GPIO2[10] -- 43
3 b. U+ T5 |& H // SPI1_CS2 ------------ GPIO1[0] -- 173 e! Z2 \) i( L: b {; s
// SPI1_CS3 ------------ GPIO1[1] -- 18
; ?# [& I- D$ F
& C5 J4 {& q6 q4 A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
6 T9 p/ S! E- E {2 Z, V$ @7 w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 `* |- ^1 j9 l- B( W$ G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);9 h, q* M! ?; m
8 D2 ]' n# H* o5 N g& O \: D //DRDY
9 Q3 G' ?9 Z, w% Q9 k. E; |- u GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! B5 g6 \- S P9 l- c
// CS2,CS3
B! {( |6 v8 E5 @" g. P1 U GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
. C7 n; P6 U$ D, \# g4 @ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" x2 t! M A! q
//SIMO
- Z; P# D- a+ t- X0 N; u GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 n/ C" c: B1 o1 n g5 a2 t //SOMI
) b3 D2 d$ |/ n& } GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) I- V4 i% p+ G& u4 B7 v //CLK; r6 N! R9 a# H7 q. f" {4 k7 V P" r
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 `5 } B1 d/ R5 F9 _( f y) ]: I5 i+ c: e8 S# V5 e( E- p
// LDAC
/ C' m5 h# H; ? GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% F/ N, @0 F/ K+ O& _8 V- y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: a' {* o8 x8 w3 I$ E0 A A7 K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( v0 W1 K% k) A+ Q# K0 Z2 E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ Q3 f _+ y( ~2 d0 { GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- C. o( i+ k8 W3 C" Z4 o7 Z# }}. v8 L* b5 p3 |: q( l
- p Y2 |( n0 s' p- D
int main(void)
& x* j1 `- D6 m; v, V, n{0 K- `, P o! l' l9 r- E7 K z5 `6 v1 b
// 外设使能
7 p, A4 l4 a* p0 w$ a7 p PSCInit();/ @( i( r5 ?4 W' u: B
" r( P" S( b/ a: T
, s) O6 L' F& E) g( w // 管脚复用配置* Q( ]$ L8 ^5 s- e. U3 {
GPIOBankPinMuxSet();
9 |; R& P/ u7 w' ^2 F- h5 n for(;;)
$ \8 g% y: u: B6 e1 p1 q {- l# f5 s' l) L5 e; t
SET_SCLK();//时钟正常输出 y. n {2 W, n* R7 d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 |+ c l9 |- ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ C! w2 l5 l {! e7 F2 P GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
: i7 S1 `8 ]6 l6 Y9 Y }8 {
' G3 R1 U7 g& V: n( x delay(20);
2 j2 `7 s) ^" m3 G CLR_SCLK();
; {8 M1 l2 n* u" M3 W0 A# E% I3 t' K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 W$ `9 \" }, D U1 P4 T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- F0 B# @! a1 _2 m0 T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 Q3 n) v% Q! ~! M
delay(20);: [2 `0 W9 l* [' @1 o- \
}( O& o+ x, s6 z5 ? i4 e& z
}
$ D' q+ c6 G. u) R2 b |
|