|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# d: k0 a# T, o/ L# a! J1 s' f
void PSCInit(void)6 G) P3 M4 ?; F( b
{
0 \0 a* ^' @' h5 u PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);( M. y, X- J: ]0 G* N2 d2 u# n* ?9 v
}$ j8 w# C+ l( [) E4 N
}9 [: d& f, y- b1 a) p0 hvoid GPIOBankPinMuxSet(void)* K$ K! @* d& \4 x# M- j
{; [8 O5 n" G6 a" s3 }
// DRDY ------------ GPIO6[14] -- 111* D% A% @" z5 P% S# e+ h; s
// SPI1_CLK ------------ GPIO2[13] -- 46: O) q( Q. a7 G1 I7 @: K( ~# |
// SPI1_SOMI------------ GPIO2[11] -- 44
* o3 F7 d, W, ~. ?: x& l, O7 Z // SPI1_SIMO------------ GPIO2[10] -- 43
! L, e; a: M) R8 @6 u n // SPI1_CS2 ------------ GPIO1[0] -- 17, ?9 E" U0 S. t8 |# A
// SPI1_CS3 ------------ GPIO1[1] -- 18- u6 Q5 N# \$ M M! q( i1 |
7 ?$ A0 |8 N8 |7 A. ]8 @1 ?" S5 d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 ]% N8 d7 N9 v. W6 V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 R. k5 I* u# y9 n$ J: O8 b x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( y1 N- b& ^' x' D+ m
) y3 d' a7 x( ?+ c8 A) _ //DRDY
2 j2 c3 r; B" X6 W) F, r GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; H, X& E+ i4 R0 G // CS2,CS3. C' S; W$ e9 c! |' y' g$ M
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS25 B; S% l1 L7 [' @! @/ t3 a
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
! k i; p# n" }( A/ h //SIMO9 |) u# X2 I$ c8 U
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- B4 ]! R: x% c, }. K, m! C //SOMI, Z+ q8 K$ ^9 H) y4 K% n. B
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 ?# G0 O( ~- X: w$ D# d //CLK3 s& o U5 T5 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- x9 `; X% B( N' L
- r: P" X2 I7 i% v, Q // LDAC
$ |/ r! G! }7 c# p& ~/ V' a GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
% p! a; c0 L: S) m5 J+ b0 ]) y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: u/ K8 G& D S" K% Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 C3 p% m! [! c$ A4 u8 m* i5 A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3& ^9 L9 L f$ m( Z; f4 C
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY8 f; U# p: ~" ~' [" C, @" w- V
}) r" F: n/ s+ J: ?- N6 {; r
n0 m3 y4 l" X% R* _! G
int main(void)
$ J0 a9 D4 ^! S l4 t; ~' f( N1 X{
) F8 c+ v2 H- Q5 T8 u // 外设使能% P7 Q, U/ w: Y. L7 a- @- Q* `
PSCInit();) V. @2 {" V6 I; @
6 ^. w0 ^# b8 X
1 c8 Z( f1 Z7 C& w! g2 h& f
// 管脚复用配置: j) e, q" {# ~9 R1 j4 q
GPIOBankPinMuxSet();/ @$ a2 @/ q+ u6 Q# ~$ ^
for(;;)
' b. d5 ]9 A0 C {
, E; v! W! `6 s; q1 O* I SET_SCLK();//时钟正常输出
# P" S4 W) j) ^) I# } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ k! z( |4 f" }4 I) x! X. F4 z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& g1 Y; {1 o! r2 `6 U8 n7 O8 X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- N1 ?5 U3 q1 [
$ E4 p/ v8 c8 W* L) R
delay(20);
3 G3 W. j* e9 Q2 F8 G, F CLR_SCLK();. F( g5 y0 ~. w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 l2 f: Y: G9 f1 o
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: W1 c0 w* P$ x" d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 ?: V O8 P6 z/ U, i
delay(20);% Q4 J7 g. T& | r$ {( G
}
2 i; h$ A. M& `( V. P+ U}
7 x# E. }/ r# `$ F' Z1 s& ^) Y |
|