|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 v0 L, U+ D1 S, a. T- d+ yvoid PSCInit(void)
: S' V! o, e1 W) c x{
5 P, w1 |9 t- S- A; H3 ]2 \7 b: t PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% f- ^2 ~( y- s8 C3 A
}
0 U4 P% j6 `5 g' x s: o% }5 s" o
( L$ }2 I% |- Uvoid GPIOBankPinMuxSet(void)( ^" Q) ?: c( }% X* c
{
$ E e+ R8 N, b5 B // DRDY ------------ GPIO6[14] -- 111
6 p! D8 k3 { s // SPI1_CLK ------------ GPIO2[13] -- 46. \4 M/ X& W2 U; p/ _$ q
// SPI1_SOMI------------ GPIO2[11] -- 44
) C* t3 B3 M3 t8 Y3 C7 n/ p" G7 ]$ j // SPI1_SIMO------------ GPIO2[10] -- 43
) t3 v; c/ l9 V( z1 d N; } C // SPI1_CS2 ------------ GPIO1[0] -- 17
1 {4 ?( r, @& C8 Y; K6 I o0 m0 Z // SPI1_CS3 ------------ GPIO1[1] -- 18
& E+ G c8 H1 p& O; z
( h* K6 a8 l* V) h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000); ^3 c8 ?3 s4 N6 R! T+ m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% A" f J1 ]! Y$ r, u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# _/ B( ], I3 F7 T4 c
' J" V7 {7 }! s% B
//DRDY1 Z' \8 j8 Z: j- e+ J- ^
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ E/ H! L, J% i% K! w // CS2,CS3
% U) u1 }/ V m" k5 |1 Y; R) D GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2. c$ g8 ]! B: i0 y) \2 f
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( U+ ]& K; v0 O
//SIMO
0 F) u" g& {7 e. L' m GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* `' M6 @. Q+ d) h9 q
//SOMI! G0 w/ A2 n+ y6 ^; [- g2 P
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 t& ]- P! \5 |4 O" O& g$ O, H
//CLK$ w4 F2 t# `' K" K% R( e1 l1 m
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& ?8 g; w8 Y8 y/ h$ y
! G6 m8 e- ` y' A* z1 t
// LDAC9 q3 c& T. e E' x7 M& c, Y8 |3 c
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK& J. K3 @# f! j/ ^3 c3 o! B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: ~* I# V/ I- p/ M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 p- L) @- J+ J$ P' f4 {+ A2 p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 @0 `; w3 ~+ ~+ Y GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' m* r/ i. h" _}" q# H& _ B. d* i1 z0 L
+ a( }) A7 n. N5 ^int main(void). H/ ]( J0 a' a
{
4 {, _( N- J& @, ~+ h# z4 P* V // 外设使能
" y* a" H0 [1 K! n PSCInit();/ R% z* C0 [& @( M6 l7 v. f+ O
. G# D5 M! q7 }) D& Q X
* W4 T9 F8 A. N M6 ~ // 管脚复用配置6 V0 D4 s- q- P$ C3 {
GPIOBankPinMuxSet();8 }! c5 Q. p# D9 G+ r
for(;;); e3 ?; X. ~+ r
{
+ J& e) l: h* ~: \% b6 S5 {0 O SET_SCLK();//时钟正常输出5 {" L8 e6 I6 X/ ~2 [$ A0 A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 s; u$ j6 o+ ~* B2 f/ j$ Q2 r, h GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' ?! f) C9 f- F w2 ^7 t ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
- @7 R1 X/ s3 a6 H, u
& m* M: ^ F5 i delay(20);. v( T( y) C& {9 v3 ~9 K
CLR_SCLK();, q F, ?" A. w% C$ j" U
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: |5 I) h+ }1 k7 l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" R$ ~; F, u' P* i9 [8 L& P- { t" S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ y Y7 F9 G7 Y- b) }: C5 h delay(20);+ e: i C! m# R( E% `' ]
}
/ r$ s8 b- e$ v) K2 X% i5 ~}7 X! ?6 z: x3 }+ ^' y
|
|