|
|
使用下面的例子代码,不能使SIMO和CS为低电平:" r0 C' S2 A! T+ C/ @7 k
void PSCInit(void)
8 ~5 R$ m6 s7 P* G. W{
$ Y- B: |- b% |' | PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);- v, H- r+ \8 W. m) I
}* h8 \ y) a6 d, y8 \
4 M2 q3 R7 X4 z4 f$ |
void GPIOBankPinMuxSet(void)
A2 [7 z" D5 C" c9 Y8 i$ `{! ]$ b4 V& g6 p% J* N
// DRDY ------------ GPIO6[14] -- 111
/ r- D' N" O. t. ^ // SPI1_CLK ------------ GPIO2[13] -- 46
4 f4 t' J& H# X# p0 T+ ] // SPI1_SOMI------------ GPIO2[11] -- 44
$ @/ G- k& Q" a* Y8 @4 _8 _ // SPI1_SIMO------------ GPIO2[10] -- 43& I; r7 r# q) {$ R6 ~3 `2 o9 }$ l( a
// SPI1_CS2 ------------ GPIO1[0] -- 17
1 M; n9 z; ~9 C // SPI1_CS3 ------------ GPIO1[1] -- 18
+ i+ ?. O/ {3 c' R1 G4 G. \ e4 y" `$ C% B4 K5 i( l. q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- x/ Y9 b8 H: Y, i( O* ^
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 w* d% T/ j; ^7 q# `+ g" i9 E0 | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080); _" R1 I; i; X* k7 c: X0 q; K
' P- E4 `% e9 W: R //DRDY' j" }+ H, \0 h( [1 X) z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 X! O3 b8 U' y // CS2,CS3
; U2 [& ?* \9 I GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: ]# j+ M7 ^! n% S4 j: Z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
2 |1 K" X. k5 X. v2 x //SIMO* _" {# d: n2 c; d1 @* x
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 L, }' x( j) ^/ ~- [ //SOMI
9 J9 G1 M; V8 M& L! s GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 f& c* o5 z) X8 C0 q3 R( x6 ` //CLK
' E7 y7 R+ B6 s" e7 n4 K' i GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 \2 p/ L, r, r) d9 m4 |, |& G9 d0 z* g
// LDAC
9 @# r7 S, P& D- l GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* U& V- e0 i' p0 R3 D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 m& T4 {0 C; m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 I& n+ o6 G) q& b( B3 N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# H) m* ~# ? t1 u GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 o4 Q( q2 E' b6 S; m
}; X' i0 A4 ~6 P# |4 i# [9 a
" t' q' A ^* @- `int main(void) x- {1 z" F* D6 c; |* y- B
{, [% m% O' m9 p! A+ y
// 外设使能
5 Y( ^2 x3 F! L, k' c8 [ PSCInit();
9 X* a; n- a; J* m8 ?1 M$ F! J) Z& ~/ x B( d/ v
! s9 H8 m4 A5 X* r
// 管脚复用配置, {: {6 I. P4 P; E( `, r% Z$ g3 ~
GPIOBankPinMuxSet();* ?1 O: c4 f4 [8 Z
for(;;)
# \; q8 n( ^# Q9 _) w( E1 T+ U {/ c2 [6 o! C1 x4 c) E- m& M! X
SET_SCLK();//时钟正常输出4 k$ k+ F% H& \7 ]- o4 [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, y3 o/ K. Q' p9 n- j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( l$ |" i, V4 p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! f. E; `' H% p; y/ t4 \% t+ {, l- I
7 D; L4 s, O6 X# a- W% D" `) Z1 C% V
delay(20);: P' I; t3 R8 z6 Q7 c1 Y! Q5 a2 i( ~
CLR_SCLK();
3 w* b7 I: \7 V0 t" W! k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 c* L, `7 V9 u$ A! F/ R& D4 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS38 g& |; E2 F& B' u0 {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 M/ V' H' c# `5 c( [% j4 r delay(20);
. J$ q# ^( g; d! o3 Q/ [' E }
) \7 O% U9 ~! y' p}3 {2 g, q; z# c# l- _! M4 c
|
|