|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ i; g# q1 i& O5 j( F' ~void PSCInit(void)9 J" Y5 w9 x5 \
{
8 B- Q' J0 [6 B7 f PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. y1 J9 [3 |" u7 T}; r. w$ B9 ~* A Z) H7 c
8 v0 x; `! W- e8 S* l- X# F
void GPIOBankPinMuxSet(void), X$ L" h% @& ]% S# B) t# }+ e
{' f: C/ W% F$ v ]3 G2 |
// DRDY ------------ GPIO6[14] -- 111$ F6 D5 n% s) T$ W% X1 |+ z9 S; t
// SPI1_CLK ------------ GPIO2[13] -- 46
2 [. {0 v# w; {' z+ B" [; W# D // SPI1_SOMI------------ GPIO2[11] -- 440 ~% G5 g2 b+ {. P8 T
// SPI1_SIMO------------ GPIO2[10] -- 43, I2 j& Q- G3 }' p- G0 @7 y
// SPI1_CS2 ------------ GPIO1[0] -- 17
1 c9 V8 }3 `9 x/ ^3 Z2 C' g // SPI1_CS3 ------------ GPIO1[1] -- 18
7 H+ d5 k% a1 A0 z2 ]; u v$ F H" y4 o' Q% e0 N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; M9 q/ Z1 l$ K" O0 k+ w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 m: e2 P" T+ ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
7 G9 |' L: g6 b+ b. X( p9 M' r% U
//DRDY! }7 [, k0 f" E3 P. S% q- z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
5 ?" A* y* [, U9 T q1 v% Z // CS2,CS3
, @9 e- g' y$ F8 H6 x) j7 J GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2/ A0 ?" L3 `& @2 ^. o
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
0 x: l) Z1 Y( n( Y% n6 F //SIMO/ _/ z6 _4 V* }1 [% H5 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( B* V& Z& {0 ~ //SOMI
8 }/ o8 x5 H* r GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- F1 x! r# d. k3 u //CLK
! {8 u* R4 K1 {4 z) z9 H9 f$ n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( o* f5 `9 T" J0 _0 s5 W+ u; Z6 b
0 O1 U( x# r. a+ } _1 E2 N8 s. y // LDAC
+ Y& K) K+ c( T* v GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. n; F/ ~! K+ G$ ~: O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 @9 Q5 Q. _, b$ | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 c0 w% E$ O! B. J5 f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& h2 W6 ]+ J- O3 W$ ] \9 D GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! x# `7 N+ Y% ^. o
}3 k. u5 e+ }8 c/ j0 R
5 d1 q; f1 C' L+ E: oint main(void): t$ [* P. D: O% E7 _5 |8 e9 c
{; ^$ ^- I0 ^; u- P% }7 m
// 外设使能
$ O1 @8 Y- b) R PSCInit();% F* `5 z, U( `
% B* q. V* d( D4 Q3 K4 d . c: ?6 q2 I0 a* k( t
// 管脚复用配置$ s4 m$ f2 v9 _* f8 X: y+ O
GPIOBankPinMuxSet();- i+ E! k$ X( ?& T( r; @
for(;;)! o/ ^/ E) F' D0 c6 J$ h
{. A5 G7 W# T; _2 Q- k7 E
SET_SCLK();//时钟正常输出5 y) V/ P- c; A, O$ k7 d) z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- h7 [ \9 l) v GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 f" i7 D& d/ O& ^+ @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 z2 ] e' `9 `
9 [6 E d- P% y. f4 D. _6 R0 x3 r" I; \ Z delay(20);8 i# j( u1 z( s+ s
CLR_SCLK();
2 l. n( W# u( I- Z1 d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ c! z& O/ v0 ~% }/ ^3 f! D# m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3" J' ?2 i0 y! w3 f' L6 V% y2 C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' B9 B( k3 G' h* g4 w delay(20);
1 n+ A. Z& S+ o1 f' J* B/ Z, C }$ U! P6 x5 D9 M1 Q/ T _
}! B9 o- v0 S% W4 {+ h
|
|