|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
7 u) V u2 J. q$ b4 N: vvoid PSCInit(void)1 E1 k& j/ `3 y, r" |
{5 L( J* i8 x v* |
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);5 @( z- K; S, f/ u! _$ f9 m/ N
}
6 x T! m. |8 m7 x5 |0 Y- B5 ?$ O( U5 n# c( y
void GPIOBankPinMuxSet(void)
+ m" t2 w! `9 ^0 u3 `7 J{
( f+ b$ W& x; N0 } // DRDY ------------ GPIO6[14] -- 111; A( L% r9 p# _# x
// SPI1_CLK ------------ GPIO2[13] -- 46, Y( i% K u4 N9 P
// SPI1_SOMI------------ GPIO2[11] -- 44! U: J% b; D) p. h
// SPI1_SIMO------------ GPIO2[10] -- 43
) Y2 s( S% ^/ J& J% K // SPI1_CS2 ------------ GPIO1[0] -- 17! G/ R+ d6 y5 C
// SPI1_CS3 ------------ GPIO1[1] -- 18: \; D, j, T: Y) W6 N7 E
3 q8 k+ m$ q. G" h' v0 C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, W$ l0 C4 F7 e& M% S1 v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 ?5 V2 T N& w( i# i- Y% s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 P! ^" E6 ?; g. c4 G- D1 r& }+ l" K( E
//DRDY- [3 Y! r- V7 n; |' g
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ u+ `+ Z' T, i6 n% t+ }# ` // CS2,CS3- D: P, M( M& |$ o
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
4 _* K5 K! G- H# H$ }- P GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS34 q- h% v2 j/ m% T! y- O4 r% n J8 v
//SIMO( V1 F0 R9 p6 p7 c5 |5 D( D+ w
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
7 V; T5 J- h2 L1 F/ s( M8 N% t //SOMI
2 `7 x$ v4 R8 j GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
6 \- D" k( J8 [" I$ q //CLK
) d: v0 P5 b+ |% g GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% e5 m; N& M$ y" y' d
$ c, J% m8 X2 T: o/ U) b" [
// LDAC6 b9 G2 z$ x# z) w& H3 P7 X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK- o2 z/ T( a+ G, V+ v+ Q8 k# G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, F& A0 b; ?" [/ Q5 A! r5 k) }* ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ |0 Y/ x9 y2 A3 C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; W# I5 q* z4 h$ `+ @) [8 t
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 z. Y) x4 L* `- ~# f3 ]3 a- B# i
}) }% } C1 g" f( g6 D% I
) P! u5 C: t5 g
int main(void)+ Z7 k5 r$ ~. o: B
{0 b: y) @9 n. p3 b, X
// 外设使能
4 u `! P6 z Q5 b2 H PSCInit();
! a) ?* Y- n t) }* G+ E+ f
) \ \ Z: |6 ?+ f# J# e: C7 H
2 y4 \* y1 C7 E3 M& B4 |! o# C, { // 管脚复用配置( k \& i& r2 E" e( F3 S
GPIOBankPinMuxSet();1 o" d. s! G G* C9 B
for(;;)4 g" `0 s1 [+ ^* h
{
7 h2 X) s# Z- w# t5 Z! W SET_SCLK();//时钟正常输出3 s/ h# U; H1 v# Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 C8 [: B! g' |
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
! P% p0 [9 S& w1 A5 Y1 t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ `/ J, }: D5 g* h. O+ Z7 d
( t8 e v' c, z2 b! G0 z# h
delay(20);$ Q/ w( `$ L2 f6 D& z- ]
CLR_SCLK(); z# y! I$ ?) d7 v2 R* y0 S0 C5 H* v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' o1 [* f5 g% F* | GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# u9 x+ W8 j7 {2 w3 O" k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' g% s! f8 \- ~# t5 w& _! g6 p
delay(20);
. x( k+ e4 c, ?$ T1 W0 w3 F }# o0 g" k6 Q+ c6 ]! i$ L8 ^4 c
}: r; P# `, U T$ R/ F8 L
|
|