|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
, G' ^8 K* I; c6 `void PSCInit(void)
, n# U3 ^, A$ `! K# e0 j3 a{
( |; X, r+ w4 r0 f PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 ~1 w- c% F- X. {7 ~
}1 H1 P Y+ L1 J0 P
2 ~ z' w/ b, @" b. M" c$ qvoid GPIOBankPinMuxSet(void) @/ n5 n" Q' a$ _. h7 o
{
) O: w) w) |4 l // DRDY ------------ GPIO6[14] -- 111) q3 U# e) |% P4 \- j
// SPI1_CLK ------------ GPIO2[13] -- 46
8 Q4 r5 z! t$ u" r' P1 {7 M // SPI1_SOMI------------ GPIO2[11] -- 445 W) s2 \! W8 U; U" U2 ?) r
// SPI1_SIMO------------ GPIO2[10] -- 43
{* ~3 l2 w1 s3 C; W M& H$ U% d. n // SPI1_CS2 ------------ GPIO1[0] -- 17: `" [+ F% n; w$ C
// SPI1_CS3 ------------ GPIO1[1] -- 18' b1 S; h4 `1 `9 Q
0 t6 q4 ?1 D) K6 Q$ j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 T( H6 W$ O/ A2 q5 [( J6 Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 D1 U$ i3 J- z4 _7 C. Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' ]# l' O/ p( [+ Y& }0 P |
/ T+ B* [+ l& o8 z
//DRDY$ q. O8 L5 s) f5 \6 m: h# Q/ v
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! u9 E, w- {% ]) } // CS2,CS3- h6 C# W2 ~( Y: h% z Q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ f$ i6 h3 g' i0 f GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, d _& r0 e! ^
//SIMO4 @2 S6 w9 b* n& N/ |1 v
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. N& @ g# }' A( S
//SOMI" \) x/ ?' o& n1 E
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
( @0 { G8 l4 B) y //CLK" r3 j$ P: N1 _" j; l" |3 R: H, Y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# P6 x, t& [$ M4 L- {# Q- ~* |/ N" \
// LDAC9 d ~! T) u% w. d7 Y6 N" j
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 M$ t1 c" f1 { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ ]" a9 B3 ^9 p/ v" ]/ o; C* ?3 Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( d3 k/ Z9 r6 q' C+ F8 t' X4 R GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3# [8 c) m5 H9 s- A" V3 A- p
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% d9 n& c+ v3 F+ t}
; A# l( o* P8 c% m8 C
1 Y+ l: q. v# U+ V6 l: v1 Z/ iint main(void)
, w0 o( [! d1 X" H9 {9 f{! I c3 f* s- r. `0 C
// 外设使能& J, p m6 M- t; G/ _* L
PSCInit();8 `' |7 T7 m8 r. d" _+ p
r- b2 Q9 ]$ a" Y% q! @
8 A8 f6 a0 B- \& ~8 { // 管脚复用配置
& v" P# ~6 l) P! d5 E GPIOBankPinMuxSet();: ~" v. ?% y$ \ K( k- `' ?6 f
for(;;)' D* ^, C& G, T* W( U
{
( }* O# h) G- e6 d+ n SET_SCLK();//时钟正常输出
% z4 V* `7 S! B- }3 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) Y* `+ P' l" ~; {/ w9 h GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 K( i. N- K; c7 A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
$ j6 Z& G4 X2 F' x2 R( I1 A; Z y1 T* l5 W! y
delay(20);9 x" N7 E7 C) G$ T- v& U' c
CLR_SCLK();1 T0 Y b6 k4 U7 D
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3/ ?4 y* c& h- n$ ~8 T6 k \3 w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
% Z8 q+ W: h$ i0 e6 u+ h; A9 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 j- e3 I' O( o* u. c$ H/ A delay(20);* w" _% w! R$ y4 D. j1 x
}
# x7 ]9 W0 V* h2 |, w0 }* w; M. h% a}) ^- X6 p, K3 `7 C% @+ h% Q
|
|