|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! [+ U( e( e1 \6 |- ~+ E) \+ B
void PSCInit(void)4 T3 X$ P. c+ B; c/ T+ U7 M
{' p. u/ t. [" h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; s3 Y( {: b. x9 i& m T, a}
- U! p: X+ c) F* [4 @" p: q, i/ A/ f. k. h' o& \8 ^
void GPIOBankPinMuxSet(void)9 {6 A1 b2 ]7 g w7 x. g- h
{ g/ B$ |' G9 P: U" X
// DRDY ------------ GPIO6[14] -- 1115 L) _/ H+ z$ z" r* q, g! i
// SPI1_CLK ------------ GPIO2[13] -- 46
/ C! P0 e, ?$ }( {7 S* s% Z$ n1 e // SPI1_SOMI------------ GPIO2[11] -- 44- h5 b: g0 x- {2 k: X5 V' A
// SPI1_SIMO------------ GPIO2[10] -- 432 v' w/ j# ?' D- V& ?
// SPI1_CS2 ------------ GPIO1[0] -- 17
) b& Y0 {7 V0 u // SPI1_CS3 ------------ GPIO1[1] -- 18
% y! r k- X: N& N: C. |' C/ L! O/ v3 @% V/ ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ T. I8 ]! L8 ^. p3 c; h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 E, z H o% t1 h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, h* ]' c/ B" F
# ?- o& F7 f6 J: K
//DRDY
9 B2 s `* \0 l9 Q) t GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 T4 |4 l, U% X1 t" J0 g
// CS2,CS3
`; o, J. m+ ~; `* H GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 x. `7 Y0 S6 k& T' U8 t7 u GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ F) V( v; [" k, A6 I //SIMO \- E5 z$ ^5 A/ z! D7 P, T
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ w/ K" Y% x/ s( N* ?! K$ V2 I //SOMI% ^ ~0 |' T9 T Q
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 h y* J2 c/ l7 Z //CLK
, H& t1 e! ~2 O$ F GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
( o# @) w. B2 u( u- [6 h
2 z! H: j( z/ n( l6 ~3 U3 y( m- p5 K // LDAC3 x( t7 I( g& ^; Q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# y3 `# E/ e ]9 \$ B7 z- @4 Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! T1 x; r' q1 X2 A p. J& R; v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) F6 u" }6 H( v* D+ X1 P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ u V; f9 O% g+ |9 I GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
7 _$ \; ]9 W0 f. q/ {}
( t1 F- I; [, H; p8 s, U: E
7 k5 F7 ^# x+ w! L2 jint main(void)
! `, A7 h; o# F1 m" B( q% P{
/ v2 N; F* s, }, l" P! Y) R# _0 y# n // 外设使能
, Q- w+ L' A! S2 S3 o# p# u% e PSCInit();
' v# T7 q, G; [4 b2 Z* v7 a& ?
+ d) [# V% P \6 G) P6 K+ g6 m
, M5 A- |5 U/ G // 管脚复用配置
$ } G$ m1 M; _- V GPIOBankPinMuxSet();! M6 \! o4 a' I. [8 S ^
for(;;)
9 G$ p5 u& w) F. _8 V {
( Y* c: j7 Z& a4 w/ l. R SET_SCLK();//时钟正常输出* e) a8 }/ w! a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 [7 _+ i- s; P9 N* V9 ^& c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& v! F8 t) v5 b8 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 M: @! h3 C: y1 \+ m
& f4 W% q" x: @! f
delay(20);; x5 e3 q6 J6 X
CLR_SCLK();
6 i- c- o/ C5 U+ P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
: p6 X/ a" y5 h+ d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! L" Y4 x5 y$ N! `9 B+ ^
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 _: y4 e1 l, u. x& y6 D' c
delay(20);% e1 C! z; m6 ^, c, V2 B" B
}4 _" J+ l3 X7 F3 {' U3 [" B" c
}
: r+ }. d' L+ E$ l" a |
|