|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 B! k9 E: Q5 F8 M% H3 r& v
void PSCInit(void)7 s' _* ?- _& R! w4 w
{
. Y: {( M* h6 y6 e; _) c8 t PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 f' L) R2 p. H" [+ @. c3 d
}. p% N' t" g% y% R
# L5 T2 `* o$ q' ?( l- F+ \
void GPIOBankPinMuxSet(void)7 m" ]* b8 A. u1 C! k/ w$ U7 k
{
! w* |7 @2 j T7 \! k& j. n5 L% E // DRDY ------------ GPIO6[14] -- 111, V& V3 e+ ?6 _. {2 i
// SPI1_CLK ------------ GPIO2[13] -- 46
/ V5 N+ n5 }" [' w' M& c // SPI1_SOMI------------ GPIO2[11] -- 44( U0 p# D6 }9 N
// SPI1_SIMO------------ GPIO2[10] -- 43
, O: f2 S |/ [% f // SPI1_CS2 ------------ GPIO1[0] -- 17) Q% {4 {6 C3 M
// SPI1_CS3 ------------ GPIO1[1] -- 18
- l. I4 m5 Q/ P4 |$ n: e- ]8 I5 v
. b2 z4 ~. a6 y7 l2 R& u0 @1 r+ I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" |! i) S( t. ^) I$ ~9 W: X. F* ^0 |% @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( x; l( @2 n; z5 J' u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
3 }; }$ K( }, Q+ t$ `, U6 i2 u# o8 C* m/ H
//DRDY
& N& C4 F4 g2 M* p( S% V GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; C7 p1 c5 c' s6 Z0 v // CS2,CS3! l: x% d% d, u
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 ~, R' B" I* h" {# e
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
% X$ F/ y+ i, ]6 E //SIMO( y2 e* g5 |1 V. w
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! d W9 c2 r/ g6 B. z* j7 A
//SOMI
$ Q/ N5 |7 ?% w/ e GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
6 g2 c) b% ?: \4 {; J. J //CLK5 ^2 ^3 M0 e9 [5 b# t
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# z& y8 V5 L ` K, [) q# c- m3 S; ?. N8 p$ M! f# b. X- U
// LDAC
/ e2 Y$ k- c9 n, @6 Y8 v GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 S3 b5 p; ?& j8 Q" Y# O, B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; u, O9 a# O2 T/ T) U3 o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 W7 |9 K+ V3 ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
- R% k3 p# ~- |" ~) y. v GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. g. A7 L. m3 Y# J
}5 L3 f; {; Q/ M/ @; B
2 M; l' y3 @4 z% F: G. |/ hint main(void)
) m& I& }; m! O9 o6 Q{
2 J' l6 h* K1 ]) e) a7 x6 x // 外设使能1 i) h8 j4 o i- Y$ a, P
PSCInit();0 ~. Q2 I/ X/ o j
; y( ^1 U5 o& W- D1 x% D. d3 P- L
o9 w4 X9 H/ ~5 `! _4 S
// 管脚复用配置; q* [% G% t( }5 n
GPIOBankPinMuxSet();8 f, A. P/ w1 T9 T: A8 ?$ O' |
for(;;)! t; X7 V$ S ` K" C' C4 `
{
# J! s; Z5 R& A$ `- \% w( \ SET_SCLK();//时钟正常输出, T9 }9 R: r* W9 `" F( J8 b) k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 E) z, q! i" U: Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ L) l% w# P) U5 I# v9 h" T! t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 `. p6 D5 a3 o" _
; l+ X- m. p3 J" A) p" Y delay(20);
& b6 T: I$ i9 j6 D: K; P CLR_SCLK();
9 i6 S4 Y) Z6 j+ w: t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 p# T% V$ s& A- C C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 r: H3 L3 } o' v! y: l/ R+ Y2 j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 I) k+ T# a( {; f2 T delay(20);
9 x. N* K b2 E% Y- m9 N }, K ]% f" `7 s, b* L& J& B% `9 C
}
5 E2 \; o; D; e |
|