|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 D* v+ c0 x$ t. k
void PSCInit(void)6 U- E5 w: D Y- u2 A8 o
{3 ~$ ?* w4 M, V! W0 i1 }
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
F) p$ K: W7 Z* f0 Z2 \5 N}- _9 ~0 M5 t& H# J! K+ E# C
+ s" V2 a$ ^5 M- w# }
void GPIOBankPinMuxSet(void)
* e( m9 @( P# f* `) ?7 X: i4 m) o{
# o7 g: f/ a: i2 H // DRDY ------------ GPIO6[14] -- 111
5 q/ R3 e8 g; k8 z& a7 @* N- u' P // SPI1_CLK ------------ GPIO2[13] -- 464 _& `5 ]6 l' I% C8 X# C
// SPI1_SOMI------------ GPIO2[11] -- 444 Y0 o5 l1 \* } ]& N' C& F1 z
// SPI1_SIMO------------ GPIO2[10] -- 432 Y1 m" j% H! T- G& m: C! F
// SPI1_CS2 ------------ GPIO1[0] -- 17) D8 H3 ^% w& m) q) B B# w
// SPI1_CS3 ------------ GPIO1[1] -- 18 I. H5 y1 s( U( U+ P' Q
: Q; Z* @5 Z2 I Q+ x2 J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& h, v5 E0 v) s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 Z, G) r0 n I D; O. e: m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 p: m2 {0 k- x& k; U
% R' L& w, ~3 h( m //DRDY6 M- G* Q0 S0 X- r
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY. k; k- j0 E/ t. i/ i5 q3 V0 z
// CS2,CS34 p j' l; x( R6 {" b& k8 D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! i( l% o0 G5 t# c$ y" |/ N7 r# ` W GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
, E3 R7 H k3 k- v1 Q4 ^ //SIMO
0 m# u- S& g7 @- A GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# ~* ?! f2 a0 x
//SOMI
8 c, m3 G9 r" X: n. Y GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
& s5 ^3 _- t F& w2 M8 Y //CLK$ O- I' E% L5 x5 x# k3 k4 A# g; z
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK3 \& t w- k& D; ~$ U0 W
! `7 J' S5 s/ k
// LDAC9 r$ U5 s8 }! ^$ l7 @
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 T( B# H* V7 s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 U/ z; _7 N7 H+ [& m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. b) ]' q! x- ]8 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* Q- D/ q; C$ g. P7 k+ @
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY; C7 b' ^6 V6 L, I
}+ z( F' P. I. x- i
- p5 g4 M7 x* O7 y: v/ b6 D% wint main(void)
, ]! E6 _. B7 l/ z1 _) R{
: c) |0 p0 U" v# X // 外设使能
/ j5 |0 O0 g) }+ `) Q PSCInit();
) `% r( H- B1 y: u2 V" @: w
* U$ }, e+ r* e+ H! W# h 8 |3 |3 m$ S% L: ^
// 管脚复用配置
4 O. K7 _0 k( \# O/ F# C GPIOBankPinMuxSet();
3 I+ s6 _: i- P7 c. v( W for(;;): [) B& W N4 R/ K4 X
{; {( v9 `8 o0 X- q: m8 n
SET_SCLK();//时钟正常输出
/ v1 o6 R) h% N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ r c. m# A5 ~. s! \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 F4 E2 B7 L8 ^5 z: s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& B) H: I5 S9 l5 r* l: O$ A* j) K
& \& @: X- y) P( {* U! o* b delay(20);
% `, {; x" A2 n4 H) V! x CLR_SCLK();" t0 m0 _/ H; V: e" K0 F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
& D( Q& L- V2 h$ S2 ^ n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 O4 ?& s! d3 ^3 Z' U5 e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN X4 s8 B- f$ V. c2 n- M
delay(20);3 L8 E& K4 U$ F, Z2 t
}
0 P$ |3 v# @% x% y$ Z% V; }3 S3 E. U}( b2 K9 U9 Y- `2 `+ i# f" M% u
|
|