|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 B M4 H, z) _4 K. R" N2 Bvoid PSCInit(void)
+ W; `5 |0 j- @1 `8 V. J{
( Z( P( Q+ A* a7 Q, ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 U9 K1 ]0 d6 I$ B% v8 v
}
, X7 n; N9 j! E; Q/ N6 `1 A) _! h1 S, K- y
void GPIOBankPinMuxSet(void)- v; G+ h+ K, _' _* p9 L
{
! N& l4 G: G8 ~ // DRDY ------------ GPIO6[14] -- 111
/ d G8 r0 v7 H8 G# x // SPI1_CLK ------------ GPIO2[13] -- 46
9 Y- Q& u& A+ w" w: V // SPI1_SOMI------------ GPIO2[11] -- 44
3 w2 [5 U6 }; O" s) b# P) `4 u$ r // SPI1_SIMO------------ GPIO2[10] -- 436 |* P- o' f+ N u
// SPI1_CS2 ------------ GPIO1[0] -- 173 Y L& m6 N; }- D0 ]$ ?8 p7 n
// SPI1_CS3 ------------ GPIO1[1] -- 18
& R$ Q1 a% j: j3 C8 i* U. `4 `$ P: P9 V, L4 @6 A& P; N a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 y" `, |8 d, u9 _/ j- ~8 E6 X! I
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 ^0 J3 {1 R6 e6 z+ l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 |/ F& }( R6 h1 T& Q' Q7 e5 R
, |+ \' _! r, c' Z. r3 X6 [ //DRDY
# K8 j3 u4 a( |8 O% f' ~+ T0 p GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' ^! \$ G4 @) O/ O# n2 h; s/ \& s { // CS2,CS3
- d0 s! N# j( L: @, ]8 n' E* S GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
" T! j( j+ j# _, H j. r. _ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 U' K8 b1 m- @; g
//SIMO
8 d7 U( y5 n, [7 E% H6 ?2 R- x GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( m+ j2 V7 Y, ?4 e# Q
//SOMI
! f8 J5 Y0 k0 K/ y3 X$ q GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* M2 P @% O! j9 E& x //CLK7 P M: @# }0 V. o( a- h
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK0 ^2 j! ]3 f5 I+ g. J( ~- a
9 J' ]- y; u% [/ d
// LDAC' r: G8 r6 L) f7 A
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ `6 m/ @" U2 ?! R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 z4 ?% m/ e% J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. S8 H+ Z" j2 i; W9 n( ~. g$ J! f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 y' n( u7 U# O k& g" Y& _
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
5 E* x$ a" h: l" f6 F}
1 Z9 J3 K- X' R) r
& T9 w+ ~, Z$ F l5 lint main(void)
5 P0 C a) b- v8 Q: X{3 a/ W( L) j% c0 H3 W0 @8 U+ X
// 外设使能7 f% F0 K+ F5 P: k1 X F
PSCInit();
8 _7 s' P9 ^3 U3 J" n/ J# d6 [2 V
) x1 `" _ k+ `& o u: B+ z - h, u. b; @+ Z
// 管脚复用配置
7 z7 X e0 Z8 L- P6 \ GPIOBankPinMuxSet();3 t1 m1 V) n7 B& W5 J2 k* h
for(;;)# k& B9 ^0 W+ k! a9 @8 u2 u
{
) d6 j3 A1 E. d# k' N SET_SCLK();//时钟正常输出' ?$ j' d# G) C. c/ ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ Y5 Y) K9 C1 @6 T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
. }, M% H, e/ R4 L9 A9 _& J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 B+ e3 ?; K: h. A7 ~5 W) ~7 x* U
% Z7 k; p0 U0 \. B* i
delay(20);7 x+ s5 v- d. A3 y# _% w$ p
CLR_SCLK();
* g- Z" d& i- f# p+ E" K( s2 H2 G5 z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) M; u. q5 @% o, g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, t6 L+ p$ A) ]" M+ \7 }! a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& _: N1 F3 E* j* n6 u) p0 X+ d delay(20);! I: t# B" d' a
}
/ h B8 i3 p8 F$ E. K" S4 o}
$ p6 H1 v# B& Z |
|