|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 k: u% U2 M9 l' V, R( H
void PSCInit(void): m! g4 A h4 d# E" }! X
{5 V: M7 l( A# x" L5 j# e; Z* ^
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 `2 w4 E& R+ Z" M
}3 Y9 ?4 y" v; `8 B8 \& `
1 `& T# e8 _/ m: Evoid GPIOBankPinMuxSet(void)
9 E" `; B `8 l; {- D{0 k" F8 d1 J) `( `. ^0 R
// DRDY ------------ GPIO6[14] -- 111! I0 R$ t+ L/ M# M4 G
// SPI1_CLK ------------ GPIO2[13] -- 46
8 ^2 H. C9 s; M3 `# n // SPI1_SOMI------------ GPIO2[11] -- 44
7 F6 N$ a6 a4 X+ a: W8 P // SPI1_SIMO------------ GPIO2[10] -- 43) N( l* i* W5 e& f/ H
// SPI1_CS2 ------------ GPIO1[0] -- 17& }7 X _ X. w6 p. W4 r
// SPI1_CS3 ------------ GPIO1[1] -- 18* i5 `- @" U: w/ T2 J0 A5 O
/ Z1 G% v. P, F# a8 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' H) _, H. Z4 z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ M& ]& ^2 ~& z0 l/ K( K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
6 K" S4 k9 G. @. _0 n3 C4 ?$ h R
//DRDY
! C; P, H' {$ ]* ^" B GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* H# j7 d5 a8 O- n7 j // CS2,CS3
$ M3 [9 B0 K2 c. W GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 ~; Q' |( e* o' }# l$ V' P5 g) G
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 c2 H1 d, Z. S& Y" _& y3 n- W! z //SIMO
, `% n" e8 t3 N9 r/ _ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( v R. D- ~/ a* t8 K' K //SOMI
4 ` r' X3 j0 O5 D% ?7 A3 _ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- V4 Z. @7 a. Z) ^; m ]. H' B //CLK5 |2 B. F+ v+ a# G: ^
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK0 w# p, s$ u# \% R
9 v! |; _/ r" \# H3 e2 y+ R& s
// LDAC* k1 Y7 _3 w2 Y3 L1 P& @
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
0 l4 ]# ]1 u# K. z2 f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 d! a" O! W+ p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 {7 A$ d9 ?4 J. T, b0 q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
% t7 v/ W* ?1 b0 l2 r6 [ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY% v, L' L' ]; n: E
}
' U- R; `0 U( r: e' P. D' U8 I; y: z2 ]7 P1 p& u
int main(void)! K8 ?% X# _+ g+ e- G7 o
{" d/ y. u$ E2 W8 n6 G# T$ N
// 外设使能 g, W' ]& F: u* Y$ [. c
PSCInit();: e" ?/ E7 V( e( o7 t( p& _
" }* Z0 U! K' Z$ ]( n
6 L: |, @/ J1 y9 e( g U // 管脚复用配置- u% b6 K: D$ M
GPIOBankPinMuxSet();7 l. P, b8 |* C$ u6 q4 {% P
for(;;), J8 O0 \2 y/ k5 G- L3 M6 y4 G
{
& X+ M. C. B5 Z* Q' x2 k SET_SCLK();//时钟正常输出
. X8 _0 ~6 U9 Z, I; q# Q4 ?% T3 j. O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 c3 p1 p# i2 H7 N& [# {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 t B% }1 E/ {: [4 k: I( V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' [5 I, w3 K. P/ u' L* R- v) o0 D3 ~0 N- q$ h- Y+ f/ K
delay(20);
# E7 Z$ b9 Y K; \: ~ CLR_SCLK();
$ g& B! S y( T; ?/ U- y% w2 D; h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 n7 {0 z' z4 H, s6 c! J* q6 y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 G _# E: D$ T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 e" C6 n- q& `' R- k- J. G
delay(20);6 G" c0 f$ C6 ^. O" B
}$ K; W' h( o: C. ~
}
4 u+ c+ n4 k8 b. r" w" I |
|