|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ W( M3 e. c% Q. ]$ p3 R+ d. M! p1 |7 d
void PSCInit(void)0 y4 U- R" G. a1 h$ Y
{
) p5 ^, \2 o( t PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);" k$ T2 X- R6 F3 G6 ?9 [9 g0 Q
}
4 L& w- v* ], K8 g- n2 T# E. x! Z z' t3 u2 N" n
void GPIOBankPinMuxSet(void)
6 Y8 I9 n) ]- p, g5 Y{8 l Y' X+ s0 ~, t% [: G/ N4 B" f; n% z
// DRDY ------------ GPIO6[14] -- 111/ G7 K! o6 A: v9 Y& J
// SPI1_CLK ------------ GPIO2[13] -- 46
+ N/ U0 I% o V; n3 R' F# F7 Q/ B // SPI1_SOMI------------ GPIO2[11] -- 44$ i4 {( x( F7 ?
// SPI1_SIMO------------ GPIO2[10] -- 43/ F' x8 m( @0 U3 ~- `
// SPI1_CS2 ------------ GPIO1[0] -- 17( \ K* K) u( E: k2 `
// SPI1_CS3 ------------ GPIO1[1] -- 18
+ v. @! J# `9 e/ g8 D4 l8 n) r" w" c; g
+ d6 z6 a% W$ i% ~, ~. {" e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. f' [9 C7 R% w3 B8 ^# `8 K! z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);+ ~' t, t2 g) G- M) z i) i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);" a: g3 Z6 C Q F- C
) i9 {9 V3 W" B6 A5 f //DRDY1 z) w: _0 R9 u0 Z7 R6 L
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* g- e# F" {: } // CS2,CS3% X, L$ y' t1 W f
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
4 O8 o+ G, `6 k' \3 t GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3# D' U# j5 m+ B! U& ]. Y7 ]
//SIMO6 u5 |2 h* e, @, i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
; v0 U* ~9 {1 A: J- s //SOMI( B! a% v$ y1 C; Q' |! h- A
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI ]5 g B9 q0 L3 ]: H
//CLK
5 @/ K5 a& B) w/ ~! _; i GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; w; d0 [3 f$ {+ J @4 F. b( u0 Q, W& d3 }' x( l( y! k
// LDAC4 V4 J0 c p' ^! W$ B
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
- \' T& ?7 t" { L5 T: n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. m# F8 k7 t; F6 J* {$ X2 V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: H& z; z: Q! k( w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 q7 Z$ j8 h" v
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 c9 L8 n+ V& V7 s! \
}
5 j' K" e* @* E
3 q$ g p. z+ p7 Fint main(void)
7 z# u' L% m7 A{% ~; B# ~, B- G, u. Q6 S
// 外设使能
# ~# F$ c9 A/ R E8 B* B PSCInit();
2 Y9 f8 }. b0 j3 Q+ u! H% m+ H* t
' e; n3 `1 [8 Q6 J- I& V4 b4 O
// 管脚复用配置) N; _/ ]5 D& @& i; m
GPIOBankPinMuxSet();$ I! q' t& P* k- t$ J0 Q
for(;;)1 |6 h9 {2 |# L4 [( X
{
/ w1 }) R9 G8 a ` SET_SCLK();//时钟正常输出# N" o `* G' D/ R1 \+ O a1 f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- k/ v9 ]! p2 n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 b! N9 o# B( |7 F! O1 O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
+ O3 D. ?. c: W" \
4 I0 F2 r( i( j+ j delay(20);
, e! b" g1 }- L' P& j6 a, D" s CLR_SCLK();# M0 W' W, t+ U' E2 Y+ g0 w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 H. z4 R4 K4 Z( \( E, Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3( K) [/ a s3 w) E0 C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* b% K+ \$ C: P' m* p! }$ K" U9 Q delay(20);1 M% o+ l6 C- Z' q% `) ]
}* h( N8 h; t4 H; _4 M9 [( C' W
}
0 s8 C5 O5 s. \3 C ]9 Y+ B' W3 { |
|