|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
* V, _. q: V. X' y- vvoid PSCInit(void)6 Y- E$ _3 ^7 O% b9 E& p
{, H2 G& b" _* v3 }
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. l8 n4 E, V" O, O
}
, |1 @& b- X9 @' d7 L! w. M* S, W
void GPIOBankPinMuxSet(void)' d6 A% L- I( H0 w0 W7 m5 \
{
$ c3 Z/ O/ E. p8 ?9 c" L) X, q // DRDY ------------ GPIO6[14] -- 111) @- b6 Z% w: G! ]0 q* G2 A& H
// SPI1_CLK ------------ GPIO2[13] -- 464 e k- e* e# n; k
// SPI1_SOMI------------ GPIO2[11] -- 44- E" ?, ^ I4 c5 x; m$ {5 w& G
// SPI1_SIMO------------ GPIO2[10] -- 43# c: A$ q1 K, @- g- k3 w" B
// SPI1_CS2 ------------ GPIO1[0] -- 17* A* o) K# J0 a5 E
// SPI1_CS3 ------------ GPIO1[1] -- 18* z% V- ]' Z, Q3 |" d3 J" z% Q' W
# z8 H/ w/ `$ `8 C: n' E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ x! M+ W) t# T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800); t5 H& g' U m$ z, D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
; A( s2 k, f7 p: n# P
, l$ R" b3 D9 z. r/ K4 R$ P //DRDY1 j0 R t' D% j" d
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" \: k$ ]. l4 z5 R
// CS2,CS3
) A. X6 e M1 l5 ^! p1 a GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) Z4 v- l- \. m8 g& ^* J# f% u6 T
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 A4 P9 R. {) D8 Z8 e0 V+ F# A& @& e
//SIMO1 X; Q3 s! C }# U7 s
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. i# y; h: C$ ^+ |. S- G8 m+ e& z //SOMI
4 ^3 {0 p: N8 @3 M, T! y% g3 c GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI0 U& [' I y7 p( x
//CLK' g1 o' V; R1 t. }/ Z- J8 x- Q6 _
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK8 F# ~! B0 u. p3 M
r" }0 y1 F. L
// LDAC
, k! z7 l, ~ y! b GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK8 M5 B3 d* z1 [0 g1 t) t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& B- u J f- e. [$ Q! q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 N! f- f; j/ b6 q4 O; H2 [- @) Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
- r: o* n; ~5 I GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
3 a5 Z4 A* A, t N1 T/ N}& v; b4 l0 U( D" F% s* o/ R2 j
2 ^9 z, p5 K' d
int main(void)% i% f5 M8 b' `* ^. z! O
{8 [* u3 b! v6 o: n
// 外设使能
X+ ?0 Y. L' m PSCInit();
' A$ i5 i9 W2 }9 r
* w7 Q3 _4 |3 P7 X* i1 u & R4 W1 }. T* H9 B
// 管脚复用配置
% y- v0 o3 x: O) ]; H1 c GPIOBankPinMuxSet();- v# l: a, u8 x9 q
for(;;)/ Q9 M* Y; \0 ?# Q/ v2 @ \
{
* D6 u0 {" [/ f# u- C( S; r SET_SCLK();//时钟正常输出
" x9 [9 `" }$ U9 n) I8 G! Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' S9 t# Y9 p* I$ [7 t+ O4 R/ M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) N, n+ g$ F' d# R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, M! E. F0 e2 L; `1 K% j
& g" i, ^. D% c/ y+ z3 O delay(20);/ L9 o. t- s, J
CLR_SCLK();3 w @: a2 ], n1 E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: t) [: {( C7 d7 I2 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 i( z2 a1 E: K! G+ Y2 s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* C, R7 n: K; K7 d9 l! a. T m
delay(20);
x! m- z* @6 P9 D2 [$ l }9 M0 H' ^+ Z! N J# Y! d) o
}
& u: }* f6 o) b- P6 N; D8 ] |
|