|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
, L$ l. ^! T, Vvoid PSCInit(void)# ?0 R( @7 [! {7 j# Z9 Q; |% E! F
{
. P' `. O2 I5 C' w, c PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ k/ p) P$ Z) |: w% |% O}
9 C: D4 R! _7 U1 T6 F; L3 d( s0 v7 B( h8 h# y9 t) \% j! n
void GPIOBankPinMuxSet(void)9 N7 M1 W9 Q- C: m: n5 t3 x
{: |, x! S E+ @
// DRDY ------------ GPIO6[14] -- 111
y$ v( u. }- Q! ]: }$ }3 Q // SPI1_CLK ------------ GPIO2[13] -- 465 L; ?6 P6 o1 _; \' H
// SPI1_SOMI------------ GPIO2[11] -- 44
6 S, I% ?# T# o# m6 ]" ?5 X. J- f z // SPI1_SIMO------------ GPIO2[10] -- 43
9 b/ C" ^; @7 h/ n1 r% H // SPI1_CS2 ------------ GPIO1[0] -- 17$ z/ B" z; i" N' A- B% o2 T
// SPI1_CS3 ------------ GPIO1[1] -- 18
" h; b4 C* {3 ?3 q6 z) v- H
. Z, r' f, B% Y- X: l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000); D" e- l7 ?$ d0 w. R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% r4 e" @/ B. \3 U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
7 E5 F0 c ~" [* g, K: f
9 k* A5 R6 ~, l" T //DRDY
" j3 p) T% T/ }! | GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
R, r d( h3 F; L // CS2,CS37 U/ r0 h* v; E( z( J; F
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# g% M2 ] U3 _3 R
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( h( N. Z4 S$ _0 Q$ A9 e5 o
//SIMO* R) Y- b: d9 Y0 h% I/ w% }5 t
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ g& y# M& J+ ~: i4 ]7 S: W" } //SOMI
* }& |+ Z* A& A: ]! Q9 `" n. j GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 e6 w8 g4 `: D3 Z5 P
//CLK9 d, N; m8 M2 r( w9 N7 E% J; T5 V
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK3 b u5 u: M/ S6 V3 W* L- j
# G0 C$ h N' b% x o E( d
// LDAC
8 S% `: l, C6 q GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) ]" _+ ~1 x& X0 b) ^" ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 y* f1 Z: ?( @: W) `5 U9 | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- A1 {/ ?. v% F8 v# T8 G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS39 X8 m9 V7 B6 R% [
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY- @) M; V) `4 @1 l( u
}
( {) b- N6 T* N# F& \* E) e3 q- P0 h4 [ m3 X; X1 {( J
int main(void). h J$ ^& \) ~- D/ C a" W
{
: W d; t8 b3 ] // 外设使能
6 C$ e# u, C4 @' n PSCInit();
* v0 m: I" w) K0 `* w8 M+ P. o- r
% g. r) O+ l0 P- s6 [2 H4 V3 u, L) R& C
// 管脚复用配置
! v. Q7 J; V" r4 ]/ Q3 H! g9 z GPIOBankPinMuxSet();
! S2 c) ~5 Z0 J2 @' s for(;;)7 f; \! B) c+ O" j. |# \6 `
{% B2 F0 J! \1 L% h( Q- C+ s% Z, S
SET_SCLK();//时钟正常输出3 T% i1 ? ] q* _9 {
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' {! u3 k( C9 Q# K, Q/ t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( o& p( h/ N) S5 a1 P. y4 Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 }! n/ _) Y5 c# R, I
4 R* u- D% Z2 Z# Y+ k delay(20);
+ N; ^6 t7 F, c CLR_SCLK();7 @, H5 U! ?+ M6 I" ~; h+ U8 Y/ }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 c$ y. L2 l6 _' v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 y3 B- J- V" V4 l) j* q5 t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 l2 s0 e1 F0 m
delay(20);
+ r2 L, t( a. i1 O }
/ `$ R Q" L4 D: j$ @2 F2 e! S& G}
- B0 }& L6 b" E8 d8 N |
|