|
|
使用下面的例子代码,不能使SIMO和CS为低电平:. w) K, k6 M$ N, k
void PSCInit(void)5 P- w& t z7 t/ u9 X8 Q
{
! V, B9 n0 \( G4 |4 m9 H PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ L7 i' z2 L8 e}1 f2 s, U5 t: m! Y" D( ?7 a
9 I7 L+ d2 M+ {void GPIOBankPinMuxSet(void)
& @. G: u+ k$ V* x; Z& Q( @2 E1 H{' Q- A# ]$ K3 g
// DRDY ------------ GPIO6[14] -- 111
( ?! }1 D* t4 {" J3 Y) m5 F9 F, U* W // SPI1_CLK ------------ GPIO2[13] -- 46
O) N* G0 g+ \/ l: J) M // SPI1_SOMI------------ GPIO2[11] -- 44
" D4 y J& e' g; s& j // SPI1_SIMO------------ GPIO2[10] -- 43; t/ W5 k5 O ^/ G& g% G
// SPI1_CS2 ------------ GPIO1[0] -- 17
: |! F; ~8 ~: v' F( S // SPI1_CS3 ------------ GPIO1[1] -- 18" f! x5 M. o1 V3 J2 S# b
/ V4 s; \$ x2 f5 a5 k4 j7 u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* g, r7 `5 f& i1 w0 m3 |! Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
3 h9 q. [ H' E% t( ~/ b' M2 K$ x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, x* j/ n6 ?! q8 w+ @' }5 q- H( H, {- Z8 N) x) k
//DRDY
; r ?6 N! K# h" @, M. d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* w$ ]& [& l- Z6 F9 t // CS2,CS33 @3 I) \* v. \
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 h4 G5 {) D& `1 \ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 \2 }8 h! J& D) P4 ? //SIMO
6 D- c2 Z d/ d8 Q2 x% u GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 x+ f5 U8 S- |0 K
//SOMI( [2 k( q, t1 F) P% U$ D- c: {2 w+ I
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 Q: H) N( q# x& \: t
//CLK
7 M1 |' |. Q$ j8 L' t) j' }/ b& M8 x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
4 W7 y. N. C% L+ b" L( K5 G: E; `+ f5 b K& S {
// LDAC
5 S! d' A# J, O" p( ^ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK, z% y: i1 _9 p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 ?1 o" F& w1 o& e, P" J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 r0 {5 w; c1 j2 A- t2 u+ Z* D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. b- l! t3 W% [5 u
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, H' B# O6 z8 P% U1 g6 _1 `! L}2 D2 J' |9 \8 P2 W# U) _) Y/ h [
. d; Q5 R; J: c: L8 D, ~: m$ Pint main(void)* ^+ @- h6 l. L9 G$ K
{6 s6 o7 C) h) U. ^- N" W
// 外设使能3 M3 z5 o! F6 n F7 x8 D; _7 I' f
PSCInit();! |' f4 z# l$ h7 i& r" m
( l9 @: y% L! ^9 M+ y
L3 R {* [# D // 管脚复用配置
7 Y+ h4 F f- L% _6 P. i/ T* r GPIOBankPinMuxSet();0 B: ?9 j u, s7 Z' X" B* ^+ g
for(;;), t8 p/ ~% O. X2 k, R8 P
{; _* @; ? E% _* a- z0 i
SET_SCLK();//时钟正常输出
8 a% A& R# ], p J/ k. j" ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# p; C* z8 V! R2 ]/ U4 \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) V* }2 J0 B* d1 j' T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
" c. g- A2 _$ m& y) d
/ O: X5 p& k; j2 \+ K$ C6 N% t delay(20);& \7 F$ L/ O7 J4 {+ E2 K% m3 F
CLR_SCLK();
6 {2 X* q" O; v; C3 G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 N( t& t4 [& W, g- X" A+ B3 A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, j% Q" u5 f. B; h1 d) w. T& {2 m8 E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: I3 v* c! ^3 E+ r5 z8 m0 J! ? delay(20);
- B. `5 K6 t/ x }/ k A1 v( k# D4 S
}
3 j, x. i; l. s9 m; h7 u |
|