|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ d$ A; W2 I* [0 ^void PSCInit(void)5 c# `9 y. ?$ g1 Q, j& f0 x/ [
{
& H6 P* w* R. }" ` PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; s' h; ` }. i# P2 H}# L8 {0 N$ C+ f/ r0 k3 [4 E* S6 s
( P9 I% W! O$ w. j' B' c
void GPIOBankPinMuxSet(void)
; r% f* m4 L: ^2 ^$ a: o) S{
9 u; i% j* ^4 x3 @5 W( u! C // DRDY ------------ GPIO6[14] -- 111
) R1 a' o. b1 e I7 L: `/ p // SPI1_CLK ------------ GPIO2[13] -- 46
- A' Q* Z9 C: @+ S, \. x4 _6 C // SPI1_SOMI------------ GPIO2[11] -- 44
: X' _- ` H& E& ] // SPI1_SIMO------------ GPIO2[10] -- 435 l1 b I7 Y4 `: y) L- | @
// SPI1_CS2 ------------ GPIO1[0] -- 17
6 k" }1 O( O6 f6 `& Y# I // SPI1_CS3 ------------ GPIO1[1] -- 18
. T/ ]) D4 M3 q ~7 L( c$ p0 O! w0 G+ O# h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 n5 l& f8 B1 } x& j; v& M. p* W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);$ s8 J/ K: M5 L1 O9 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ q' [! N* y: _) o( R/ @2 l
7 S! X. l0 S0 c/ K9 F& c, } //DRDY* F6 ]9 g4 r/ R8 V k
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ V7 c! |4 G. ^ // CS2,CS3' P& V2 v7 ?( X# q% r
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 d; e" W+ q" y# X f GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 k! N# c4 t4 T- A5 T; P* ?$ y
//SIMO) L, `% W3 Q* _( {) U- y
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 z* K+ K& ^+ e! ] //SOMI0 o U R/ n' ^& o9 l& n- A
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- `! b, } }+ @ //CLK
+ | `2 K/ c" f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 c( V* u" w( C$ W3 P+ n: B5 F
3 b- I5 s( r2 p, g* Y // LDAC% p6 R6 ^0 k: ` Z( w" e
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 Z' B, M- W8 y2 [* m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 {4 r. j& u8 P- f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" J8 x, o2 p$ f9 z' P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* G0 i. _# W; r, N; v% U
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 l) ^5 ]$ K* z- F# x}
: i* Y7 U. }6 g- C, x: w5 F1 W! m3 _2 {+ y
int main(void)
3 U2 ?) p4 Q- p, O0 I{ [: o. C6 G. n$ l7 t1 @
// 外设使能# C9 H* Q, E# d1 |
PSCInit();
' v2 S2 X4 }5 A/ @4 l& {$ H$ T
8 z* G" s0 Q* M- v
" \# _6 V4 t Q' |3 j1 K# O- o // 管脚复用配置
# f0 x: |+ f: i GPIOBankPinMuxSet();* m6 A W+ w6 _# Y
for(;;)
# X+ ?/ O5 {# Q2 C0 r {
* K9 [6 D7 @, B+ ~. ~, N- G SET_SCLK();//时钟正常输出
* `& h) M! m% G$ Y3 |5 F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) t/ e5 H' m) {* X- c! j2 Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
- {( p3 }0 K$ ~' v8 \& z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, `5 T; w" t9 X6 j9 e
% m+ L- A6 M3 d; m! ~) @/ q delay(20);/ D8 W% k6 t9 `' B
CLR_SCLK();
( T9 x0 w- }7 Y0 h9 x) q6 A0 p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS33 F$ Z/ j G0 i% ?+ G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3/ r' B3 J3 `( s. ?% R) j. J2 z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 v! h+ @0 Q$ _4 _; Y
delay(20);" E( ^9 X& Y- v8 }4 I" m- \7 Z
}# B8 R6 A: @) \" E2 {/ p. U
}0 n2 m/ q' m3 Q5 ~
|
|