|
|
使用下面的例子代码,不能使SIMO和CS为低电平: _* o1 J8 f* m: o( c& v I! b* ~2 v
void PSCInit(void)6 e, M; A D5 R6 @
{7 _$ W. s+ L( Q6 k: v8 n( ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 a: K1 G" n0 n6 O8 V" w7 D, a
}
/ h+ T! K+ X% N; `" ]
6 S$ Y" U @; ~: ]/ h; L( svoid GPIOBankPinMuxSet(void)
% X/ d% |. Q1 P' e/ R' s( h{
; w5 t3 b$ B. O8 K/ u0 A3 m% i( m$ j1 \ // DRDY ------------ GPIO6[14] -- 111
/ t0 r( }) A4 k$ N( O3 W: U // SPI1_CLK ------------ GPIO2[13] -- 46
# }$ j \7 U, {+ D' k+ Q2 \5 E7 q8 B2 q // SPI1_SOMI------------ GPIO2[11] -- 44
0 a) _) |$ P2 Q2 {( ? // SPI1_SIMO------------ GPIO2[10] -- 43
2 ^1 b. L: h/ E; l7 z // SPI1_CS2 ------------ GPIO1[0] -- 17. D0 w i) m- t) S6 q
// SPI1_CS3 ------------ GPIO1[1] -- 180 d. |+ z6 Q6 Y: I1 J9 T
0 |" a) a. ~5 I; q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" P# p. k$ `: p0 p# R9 F
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 U }) g* U1 O5 k- y, q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 k1 r2 ~) F8 I0 F& V! D) @2 \% y% E+ h0 n
//DRDY
4 |: J. d& g+ }: O GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
3 o0 m: w5 p0 O7 i) B // CS2,CS3
$ t' l0 |( L+ v7 a; Q0 Z GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" V+ C5 X% x& ?+ H& Z+ k
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& P2 b- H! T, O$ |; D //SIMO
+ P; S3 V; [2 k9 E6 P. L" B' ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- b) ^4 ] { p //SOMI4 I$ Z( t6 g' q
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! U1 p3 ~6 k1 x9 z; N1 a* A5 U) L' g //CLK- d% @7 ^& D+ p4 ]) M( o* @
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 z. ?4 D! i# p2 T( r# O- Z
* w* A8 {* B* [% h/ j# Q' { // LDAC& u7 N4 n# c) K; h* z/ v
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK; j( D# W$ f: t& A* w w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 U' Y5 a ]: I, w# `" f; }9 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 M) l8 }8 M( ~- c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 d, w2 K" U$ {: B H7 Y% E
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 A5 W8 Q* M/ \7 d- l0 v) f5 y
}. [4 v& y/ m, ~* O1 g- O& u1 Z6 t1 W
2 q9 g7 T8 u/ A* Z! l: `2 M1 Z0 n
int main(void)! Y+ ^# u8 @1 j1 t% R b. A1 }
{
7 Z* o# O: q. E' }$ U" P- R // 外设使能: z' w2 W) {5 R" g
PSCInit();
' b* t& m8 v9 q9 k. U; Z8 J; t3 n) Q% K8 v& [! G
/ [/ J3 T' t# k // 管脚复用配置1 `0 s. ^* u, Z
GPIOBankPinMuxSet();: A3 b( g$ y' D$ ?( ^: g& T
for(;;)
$ y" E1 @$ h0 u1 L" J {+ ~6 w5 @4 |# ?- A
SET_SCLK();//时钟正常输出
$ N u" E- S3 O! | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 F) e3 U3 t1 _& K" ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3( _0 \2 ^! @( I) c# o$ Q$ V" m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) z" [' F& n q; @" I6 B
9 m0 {0 ^: p( A1 Q4 k, ` delay(20);
" V7 T) b( ~8 U0 P9 D" k CLR_SCLK();
0 O) W& i+ M6 I+ s. ~6 d8 l' } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, d) v* z" c) J6 O9 |; f, ~; R GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
1 g2 l; c+ X' {8 L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! F. V, K1 f) o) o' O; F2 C) N delay(20);0 g, G+ \. |, g
}% E$ n! p8 E. Q5 o- T' s
}1 e N3 b/ _4 b9 {1 m
|
|