|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
! S- n# I2 Q4 Q- v) H$ ` ^0 z( X |void PSCInit(void)! M% d( W. B; J2 p0 B3 D& q
{
. N# N% f9 w& w7 _1 m4 b PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, A! H) h) G8 h
}
! [2 N6 `( L0 `, l' \; e; L: I6 B5 g1 I7 h5 c# y& @
void GPIOBankPinMuxSet(void)0 G% A/ D3 R0 r u# G
{
8 p# B: L7 E0 n7 Z // DRDY ------------ GPIO6[14] -- 111
; p9 Y8 i$ I9 Q& H% e. S // SPI1_CLK ------------ GPIO2[13] -- 46
* Y. k3 u+ u2 z6 E7 o1 [ // SPI1_SOMI------------ GPIO2[11] -- 44# j3 n/ n) A0 M0 N
// SPI1_SIMO------------ GPIO2[10] -- 43
' V8 f7 p3 i4 N // SPI1_CS2 ------------ GPIO1[0] -- 17
2 w4 U3 `4 Y. S1 g5 h // SPI1_CS3 ------------ GPIO1[1] -- 18; P+ R; S& {0 ^) V u
4 T2 B0 |, N& W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ |: u( [2 A4 J! u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 j3 _, a5 N5 r2 e$ h% H% t, N' L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
/ J. s- i% [4 n# x. ]# ?6 s' M* V. H. K: y. i3 u
//DRDY0 K r5 Y1 m3 ?- U9 w9 X J
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 H7 s: O, T" C; z+ Z9 N2 a! o. ~ // CS2,CS31 |9 }( Z B. g
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! K/ L. j% X7 F0 s7 D9 a& ~6 y GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS38 U. G) F; [' D% o- K( V% `& t
//SIMO( t! L5 R8 X4 @9 Y) I2 F
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" K) v# m% t; P/ ~
//SOMI
; y# y& P$ e' s% ?/ P4 ]) ` GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. q' D2 W6 A; Z4 I2 a. [
//CLK
( Y% \$ }4 H4 Q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ z( }$ J9 j; r( b! Z+ H! }& c9 l Z
// LDAC/ R! _+ m+ m. R. d
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 k7 x1 e2 N3 V! C% d: c' n& f9 N
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* U" c1 l/ x, K6 @" O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) p r4 V; S/ y1 Q6 [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' w2 G& V4 M* E5 C1 d GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 x$ t* f% K5 }}
+ A. A% }# o& r3 ^% p7 N
. C+ r3 T, }* P$ _3 a& nint main(void)1 m6 M5 x9 B/ W: O) `, g# I
{
+ g# s3 L( M( l) w4 j- }0 H // 外设使能- S& h: [! a, n. y& T% Y+ m, M
PSCInit();# h1 {1 a9 u# y5 G1 N
1 ?! ^; Q5 z* p& x- n1 P
# ~& r! v$ ^$ k# D // 管脚复用配置
6 c6 G- [8 G. \ GPIOBankPinMuxSet();- w! I* @+ k: U
for(;;)
5 [6 t8 N+ k5 P+ G5 P3 n* _) d {
* N" p9 M/ e6 u% T; `; I SET_SCLK();//时钟正常输出
6 K9 s0 N$ g3 Z8 x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% `2 Q j+ i* e& |. k4 A- p; \& `% L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
Z! K2 Y" p S9 e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 v, A0 t6 u" _$ [6 H- ?% h- W- Y" ~7 T% {0 W$ y) ], w
delay(20);
9 Y' `) x$ W+ v. C' ^% `' a CLR_SCLK();
6 j+ [8 e% p9 _8 K" { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. k7 M. j1 x( \3 V/ i GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# w4 u/ ?+ V" h4 B+ _* n- r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 G9 ` v- I( B' Q6 r; O. ` delay(20);
3 A- _; L; C; j }: ]7 h8 \8 { a% W& b
}, c# ?, _* L; K, n) Z/ I9 C
|
|