|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 E z# V3 p( @: t6 Ivoid PSCInit(void)% e& b2 q0 N# r& }5 V+ ]+ M* H
{
% \( X; V# j8 X3 i% f' k PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& q9 Y# \9 h9 V
}
: A9 [+ R, ?, Z; g& o( M2 T* ?8 F" a
void GPIOBankPinMuxSet(void)
& j* t' k) A" `& m1 j! j. q{
9 I8 R, M& J& c' U0 [2 A( s // DRDY ------------ GPIO6[14] -- 111
2 D. B) `. U4 M/ I // SPI1_CLK ------------ GPIO2[13] -- 46
2 g" Z& [# r5 M" @1 V$ K // SPI1_SOMI------------ GPIO2[11] -- 44% L/ \+ K/ w! d9 I4 R% H
// SPI1_SIMO------------ GPIO2[10] -- 43
! _0 Y! x! w: a- q // SPI1_CS2 ------------ GPIO1[0] -- 17+ g7 Z& c. [# F. r
// SPI1_CS3 ------------ GPIO1[1] -- 18& a) p! }5 l1 V/ J8 E; M0 n1 W
( A( V0 t: |0 C" h- V# \6 T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
' l3 _0 p" P, ^! c0 e+ P% { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 v$ l: I& ~% l8 }8 V8 n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
/ v& a( e3 K- w2 v3 Q3 c1 @. R9 a2 {) d# X0 G# s) h
//DRDY3 Z) B0 w) x* a
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; r/ }( ~$ O v/ I( D // CS2,CS3( S( ]/ |, m8 @3 c
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% K: r$ A7 b4 g4 N! T% V GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 y7 k& N8 t2 w- X2 l
//SIMO" h* d# S: J2 w9 D% O8 `0 l: b2 j
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO/ _/ N4 L* ~' s9 z* R0 m6 Y
//SOMI' Z) [3 T# ]8 j
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 U/ M# {. c1 O& A( m2 q //CLK
) z; ^8 U5 t7 Q/ e3 J GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) t$ t0 M+ l6 W8 K) |8 @3 P- K8 l0 \: R
// LDAC$ S! `/ n1 a2 ~% K( s5 C; O$ `6 z
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" m5 B& q% t" E! h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' a6 k9 X4 |2 S4 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- W' B5 ]+ ^8 ]6 H0 j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( M: }( {) r ` GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( a( L% {, l% K7 }- z}3 ?1 G7 A* f) P9 z6 J1 b
4 o) k) N# L" l; s ?% B( Vint main(void)
: _- b% Z7 F& Y" J6 H& H) @* ~{1 G' _5 v2 F; E
// 外设使能
: Q7 c& W, ?, | PSCInit();% ~' d9 V& I4 t
6 ^4 F5 f; A8 E* e$ y2 z
. H7 U6 y. I `' R // 管脚复用配置
6 f+ c+ t1 N/ g; E% W% K GPIOBankPinMuxSet();1 T9 H; d6 F2 | V/ I8 ^- {
for(;;)6 y9 U' p0 S4 P0 u0 [! q2 m" @
{
, H$ y; M% x" S: P2 i SET_SCLK();//时钟正常输出$ _8 M, y4 D9 ]- c1 B$ y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% h6 B1 T! h* e; x% W6 q4 P3 [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) N# j! U, ^) r/ {; C4 v( ^# r5 I# C GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 u0 h% d' l" G" F/ L" {/ Z& h
8 T/ b% z( b6 F& d0 {. G
delay(20);
) I2 d8 R; E; T; A CLR_SCLK();
$ l! T4 {6 I( t2 o' o8 f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 y+ d7 ?+ y1 H; ~# O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 }4 d" ^4 \: { N& J+ p, { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 Z6 N; A2 {0 F' D delay(20);
8 [% N! t/ l8 C2 a. W2 k: G7 ]5 M }/ q' d4 x7 e3 L& [1 T
}
) ?$ \5 m2 j; d, E. u- s5 \ l |
|