|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( w3 ~9 a( j3 S* T Kvoid PSCInit(void)& O3 v2 C9 f# Y6 s" C: ^
{
- _8 z L/ ]% L( p" F `8 X' a PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 z6 \! i# l4 Y' u$ t% z7 @
}7 t% E6 M% R7 [6 G4 b/ h
; k6 _, |) i" R9 O
void GPIOBankPinMuxSet(void)+ v0 {. R; b( H# ~1 x) e: t
{5 Y- F; K$ V( m. P3 O! K
// DRDY ------------ GPIO6[14] -- 1113 ?; q5 j. ~+ d1 s
// SPI1_CLK ------------ GPIO2[13] -- 46
+ K5 }0 j1 e7 y/ e6 |! g/ ^ // SPI1_SOMI------------ GPIO2[11] -- 44
/ c6 |1 {6 n0 q; ~' W6 T // SPI1_SIMO------------ GPIO2[10] -- 432 `, s/ A! e. x
// SPI1_CS2 ------------ GPIO1[0] -- 17
0 ~% Q, g- h; w+ J# q& L4 | // SPI1_CS3 ------------ GPIO1[1] -- 18
1 E! Q f' y3 Z: {1 ?& { ~ w2 l+ a- |, E K/ T, }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ {- e6 W" Q/ q! V1 }! A/ Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% O0 G2 W( k8 f% M9 Z, C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" P' R- K; o; e" m3 b
" P1 A9 ~) e" N. ]) z //DRDY
- P+ `# {, J6 |( |9 A5 } GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 k: N; f8 o" G8 q9 s) D! A/ B, G
// CS2,CS3
0 f5 ~6 N0 V; \% J" e GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) x' Z, M) `) W) A% Q1 z7 Q: r
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 j. M$ l. X7 [. \: _
//SIMO" X4 M% H5 d0 D: H) }
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO/ u. |! K! }* H' Q* d1 c
//SOMI. ]! |( O$ _. F) g; w# O
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
. C& b8 u$ W) G2 v- h+ j //CLK& C5 s; d2 B, V; _8 A! v
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. I8 ~$ A$ x6 F4 h) _5 b; |0 J- e& `, L- O' @ V
// LDAC' U! T; P3 u' u! Y0 e2 ]/ A
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 v b( h% o3 j- Y7 N) a( q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 T1 q) S% [4 H( E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# H I( w7 p' J ~ [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
n7 I& I5 K: v" [' V GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY' X [) P$ _* O5 ~8 ~* G0 l* W
}
9 ^$ `+ G2 n2 J0 |- w( A7 I0 D
' `/ f3 a; u# T# _int main(void)) F6 I& E& k* \) f; u* V* Z
{
- z: W2 i6 x7 f3 _ // 外设使能! r0 b! M& h* h% K B+ K
PSCInit();5 S4 d: k& }- A9 h E! t$ B; ]
. A% ~" Y" C( Q3 x6 ~' B
3 O8 S2 t' P& F; u0 W }3 l' g" b // 管脚复用配置
# A- @& W4 ?* Y( O- y! _ GPIOBankPinMuxSet();' K0 c+ I; n& d% b
for(;;); j1 v. Z9 d7 s) W/ f7 @: D
{, t4 L/ T; L2 l8 k; V, O
SET_SCLK();//时钟正常输出+ N9 n/ F' p" d; M) H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 ]- [& J: i, `* ?* m" r" q+ q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
X# j# z4 k0 s3 e, x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 G* S/ o. l4 y4 J( O- d
( Q: w7 Z2 x e& b# o6 n delay(20);% e% r% R. s. s6 b9 A2 ~9 `9 p4 Q
CLR_SCLK();+ M3 O1 Q1 N. [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% {3 c9 M+ z4 \4 _: [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 J, n+ Q" g( |) b6 }5 a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 o. t1 I+ X4 t. h
delay(20);2 ]" @: H/ w0 f4 I8 f' D: |
}
- r' Q8 a+ J" Y9 n}
0 F' F+ g! T6 s( [ Z( o) g, O+ J* w4 a# x |
|