|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 w4 g. ?( Q/ a) [
void PSCInit(void)( p2 F+ Y8 T. M+ [
{
' A, Y! b' v# [1 ?( B7 p" g PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! n( r; e* N) A* C}$ C$ C2 S3 c& R M
: Z& u( R6 i) N' E( }4 N( j. g" I' u
void GPIOBankPinMuxSet(void)
- r" k& P0 h, X5 ]- v; X# N% j) b{' v% d$ { T( C5 A* B
// DRDY ------------ GPIO6[14] -- 111
9 t q, L' J$ v+ X // SPI1_CLK ------------ GPIO2[13] -- 460 v- y6 j/ b- s9 q4 q
// SPI1_SOMI------------ GPIO2[11] -- 446 Z5 `3 ~7 O( Y2 `3 t& z; A9 T
// SPI1_SIMO------------ GPIO2[10] -- 43
D+ l7 @; N8 Y" S) m: x5 {% K // SPI1_CS2 ------------ GPIO1[0] -- 17, z& T/ D t( S7 z" w
// SPI1_CS3 ------------ GPIO1[1] -- 18
8 K Y8 k3 c2 F& K
5 A8 d. S3 ]3 Q. T* P# [4 P, q% N: y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
" K' h' Q4 \7 r; U1 v* a% M, s7 }2 b0 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);) X: e* A3 [3 c; p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);5 @/ ?# Z7 y, C' q) v4 D) i6 i
' t$ ]$ x+ R3 ?& z0 _+ u2 F& J
//DRDY
* j* @! ]( ~/ O2 d% w- c GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, l" p/ E5 [; j9 A/ ^+ N // CS2,CS37 h& t& ^) A) y g' Z( m
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
; e% N7 R, I" ?0 e GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3/ M; h/ K, H, ]$ T1 @. `5 @; ^
//SIMO) K |- I9 A8 U W: ^# t
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO% T) D% P9 f9 K# s
//SOMI
1 G7 j1 ?9 B/ k. j' Z1 |2 o GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ J& L' X; _, d2 F* r //CLK- m! t8 }; u, j8 C0 `; ~
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# A3 A$ T0 w) D" M( g- \) C! i4 G! D/ ^' W M, f
// LDAC8 E/ y# K# K n6 o
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 y/ Z- f5 u8 |/ z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" b3 g% r R+ J4 b/ u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 m G( }: p; g" e, C( b7 ]/ t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* K* d7 ?: h4 u7 a1 I+ s4 [
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" }% ` G2 C: v! ^! t# C! x
}
9 d1 z2 \3 @' h, s
' x: l6 e4 \7 |+ dint main(void)1 _! H% B1 V+ u8 N8 r, \! \
{
9 L3 D5 x* L- g3 }0 t // 外设使能
( |, W/ T0 r$ _& G, G/ s6 p PSCInit();
+ [+ |6 w$ G `; m8 U r/ t/ |/ J
& Q& e3 N0 e8 V. ?# Y
// 管脚复用配置, U$ ^) X5 A3 C
GPIOBankPinMuxSet();
2 G( k- B! W; i O8 Q( M! L for(;;), }2 m4 ^7 F9 d( X H. m
{
9 n. E) o& e# @3 U6 g. H SET_SCLK();//时钟正常输出
) I/ t) L4 S) m* u, ?8 _7 h2 u GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 q, |- E; w7 {0 e) G3 b5 }+ P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 G1 J4 ]; |5 W0 n: |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& K Q. H+ C. b
$ B! j4 j: a0 ` delay(20);: X& }+ H& Y, i6 \) e- W
CLR_SCLK();
1 {4 v6 l$ ?$ V) \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, d6 c, d9 _* f1 S" {: p) M- }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! Z7 Y3 Z$ }9 ^& @ t* x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, u5 a( i4 o$ ]) V3 ?9 |5 y
delay(20);
) ^ q1 R- C* w, f8 w% J }2 v; p6 K; `, y% x0 c& T- [7 l
}6 c9 \0 W3 N( x. e2 g2 J
|
|