|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. R& |' H: `3 @6 qvoid PSCInit(void)- h* s: t, t% m# H
{
; Q2 F5 z, X) L$ N3 [" d* t PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 T1 b/ h7 \$ i}
4 }/ {9 C1 r1 X, y& X9 Q
( |+ I1 }9 [( q7 Lvoid GPIOBankPinMuxSet(void)! m3 h7 G/ v1 \" C
{3 @! K4 {3 V* {3 J" c
// DRDY ------------ GPIO6[14] -- 111
0 ~4 |9 i, Q1 q7 S9 n1 H0 O // SPI1_CLK ------------ GPIO2[13] -- 46
& ]7 ~( f9 S [( b // SPI1_SOMI------------ GPIO2[11] -- 443 ^, k" J- n0 f0 m$ L# l
// SPI1_SIMO------------ GPIO2[10] -- 43
% j# @/ @5 b( W- ]) F // SPI1_CS2 ------------ GPIO1[0] -- 17; b+ p' M, u7 l& Z* t2 Q
// SPI1_CS3 ------------ GPIO1[1] -- 189 O8 f) Z3 `! n$ e+ l) Y
5 `1 g3 c3 H: U/ }/ V l( l. Q) @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) {. i7 m) B3 {5 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);7 H( @2 I/ K! B# W; f2 s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 e: U# \3 Y" g2 ]# G. p
, C; N' R! r1 ?0 K. q% ~
//DRDY) O, z# F$ |1 a: I) F K
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
: o7 m0 e$ t9 L2 [/ O0 Z7 g* }+ |7 Z // CS2,CS3/ |. o+ D; z) z+ e# V
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- _( O4 h2 k5 s# x( o
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; c4 l2 _, \2 H
//SIMO
) A* ^ O' F' F GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, g: |3 w4 f' j" B! h
//SOMI* Z% U$ g3 y: J: ]6 T0 P; C
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! E1 M4 {. k7 a3 y9 _
//CLK+ M# O2 g* | w
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( Q& j0 d0 \4 N" z: A$ V4 o
( Y. ~# N8 @; u# o // LDAC" k. ?2 R/ f6 ~2 F$ T
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, r- a4 M8 u, M. \3 |9 \) L# T) E" G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 b& ]% x h$ R1 H- A- M A- m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 U, u! e$ `2 I1 ~# S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# z8 l* u. @- N/ y% f! s GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% q& N0 V' d$ w1 I7 g4 k& i}$ G2 C& W V2 ~. O
5 i2 ]3 b2 H2 y+ c
int main(void)1 V& {2 H- B9 [- u" }( E
{
9 Y1 e9 Q- t( R* Q1 X4 r: ~$ f1 ?4 J // 外设使能4 h4 e( L, J# R/ s* {4 B9 B" o5 z
PSCInit();
3 q9 ~4 o' W: N+ W" E+ ?; z. D
8 k" G& Y( o0 t, K, S* }0 v0 L
' L' Y: l% a& f ~. Q5 K // 管脚复用配置
# H3 s/ @4 g$ I4 Y GPIOBankPinMuxSet();" }$ l# Z# t, c3 Z
for(;;)* l7 |$ z, a& h
{
7 S1 I$ p q' i+ t! D! b8 d% | SET_SCLK();//时钟正常输出2 ~4 H7 ~5 Y5 V7 R2 R- K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- v: z2 |4 I- f4 @/ I4 T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 X4 q& x/ g! S, q- a' h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# g5 d' V/ u3 ?
0 }% V4 w7 O! ?. c7 T2 Z1 y delay(20);$ n' B/ L! z+ j3 M3 Q: u
CLR_SCLK();+ ]6 \* X% T$ m6 ^+ Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% |- G( C- V* z/ p4 t% m8 f8 I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- h' B6 c7 U- Q) n/ O9 R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ F, x) a" s( {( C" U0 w: D* u9 a delay(20);6 m/ w# @2 E, v: D9 r! p4 k' }
}, _; W; W& Q9 n j% D
}3 Z y# [0 v* U) H2 l
|
|