|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ t' ` {; n6 B/ h* \6 H+ ?2 E" J
void PSCInit(void)
: _4 h5 P ^" G! D7 n2 e7 Q4 o+ J% t{
, o) B5 w6 p2 a+ I. ^; X" H PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
9 }9 n2 O6 y9 R$ h+ N# H}
' G7 J" u* l3 S5 _" e2 u0 M; u% j# m) Z' V# F
void GPIOBankPinMuxSet(void)
) v( `1 F% k; R, l+ Q{
$ T# Z/ M! F$ o) D+ ? // DRDY ------------ GPIO6[14] -- 111: _- W& l+ @+ [* B0 G3 L6 |5 w5 G
// SPI1_CLK ------------ GPIO2[13] -- 463 X# ~8 Q6 r7 W1 Q$ [2 F# C
// SPI1_SOMI------------ GPIO2[11] -- 44" e- B( e! j p1 X* e
// SPI1_SIMO------------ GPIO2[10] -- 43
6 ^0 q9 f2 v7 n3 |6 Z6 M7 D // SPI1_CS2 ------------ GPIO1[0] -- 17+ o2 O2 \' ~4 z
// SPI1_CS3 ------------ GPIO1[1] -- 18
. D: K! T& F' Q5 M2 M0 p& ~
* x6 _+ U, w5 Q+ H0 ~1 ?2 p, b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 \9 o' O3 F+ a2 S$ u( W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 X" V' p: Z2 @; w- D* X. e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' e' r; f- R1 Z- z
# t: ]7 z+ C: o- P9 e! _! f \
//DRDY
" n1 a& g6 y1 H# F: M5 ~+ z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ f B8 s+ C) d, L) \9 I2 F
// CS2,CS3
) O2 \$ z- b1 {7 w6 y" U3 g9 j GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2& s! ?+ Q- u- e5 ]/ F
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 J5 o" g1 F% O) Q# Q
//SIMO3 }/ J5 X1 l! o
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO v$ y c9 `% b/ H0 Z# X |
//SOMI
$ E/ K/ U1 M5 w3 Q# \* P GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ N& v9 [5 Q" l8 v
//CLK
, y( Q' @ J2 o GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) M# D. I9 w' ?% ^( P. S+ ? y6 j. r! ]: V1 L3 w
// LDAC4 i% c( Q1 e! x3 Z* w$ w% U+ c
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! \0 f8 f% e0 a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 A6 x, H- |3 g" X- ^0 ^; x6 D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ z( u6 |( y9 e1 ?# H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 z$ w; k+ Z' H( b& D/ `
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* k/ W& P7 ]; ], n}
- }0 w( ~8 h5 B [/ _; V1 w- u9 v2 {9 x0 ^2 ?
int main(void)
/ Y1 d) \' r$ ]' N" D/ j6 B. x{
) y. ]5 f) B5 q) ~ z; }7 m // 外设使能/ N; v/ A9 f4 |. H. ?' f( l) q2 `
PSCInit();. b A" o Z( l' V) f1 ? G; E
# M- w9 C+ u3 b5 P# ~/ d H- H
) X% X9 C' i4 Q( a f6 D+ [ // 管脚复用配置
7 h7 Q: k- o, X/ i# J" Q, z GPIOBankPinMuxSet(); E( n6 H# N( J. P/ n4 E. f9 g( {" z! q& G
for(;;)( `: E1 j# I8 s x$ n: |4 l4 a
{
; P/ I: E' v! V8 T0 d* |. e) K( m/ G9 a SET_SCLK();//时钟正常输出# a! H) Y4 \- h0 E) G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ _! f: @$ |) S% H% O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3& z9 X; S0 Q3 J, O1 F; J' `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 B) \2 C+ I/ R/ h9 N' h# D4 d7 s1 I/ A
delay(20);8 i) J) O# A8 {2 N+ n
CLR_SCLK();
3 k: ^0 ?, I" E% j) P. H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 q# h6 r8 {/ s: V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
/ X) o8 `) A6 {( W+ Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ B( P! m' p7 e delay(20);9 U( M1 I2 P/ p( \( o
}
7 G* w" y( G( r' a9 _1 e/ w5 p1 {}$ u! }7 B8 ]- i6 K
|
|