|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 w7 `. d- c7 B$ yvoid PSCInit(void)' w7 z8 M; Q: D* O5 l. [7 k7 W& {3 {
{! [! X( |5 K+ r! R4 l i. v
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);! y5 u& X7 I5 u- N
}! }$ G s9 h A2 C2 [6 B
6 z9 D% H) M1 |" y! o# X$ `: r Y# O: y
void GPIOBankPinMuxSet(void)
. @& v( |' A( x, ?% n3 v{
5 o7 U8 z' }* l; c* {# _( b // DRDY ------------ GPIO6[14] -- 111
' b0 I2 h" ~- B6 d/ m // SPI1_CLK ------------ GPIO2[13] -- 463 f2 }; O# \5 G
// SPI1_SOMI------------ GPIO2[11] -- 443 ] M, [9 f- q0 {( w( h) F
// SPI1_SIMO------------ GPIO2[10] -- 43% U1 B, d4 p; B7 S! m
// SPI1_CS2 ------------ GPIO1[0] -- 17
) z6 q. X& F# X' q: {! [6 c( J // SPI1_CS3 ------------ GPIO1[1] -- 18) q' [' o5 w8 m) ~, T) p8 G1 ~
. r4 J( y1 ]3 t$ {1 | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 u. F3 |1 g3 d( f9 M4 Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- m0 C7 l. o+ h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" F+ Q9 }0 `7 U: k: ~) V) N! {) w7 O1 E1 P* F0 g) h' A) {
//DRDY/ Q o/ a/ r% `& P0 T8 C2 g" q! j' G
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
8 A5 k- `& m3 x; A5 o // CS2,CS3- Q. w7 y0 ^. ~/ y
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 O0 n* }6 J1 x, r7 M6 ` GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( B1 V2 u. R% ]: B# e6 p+ b$ M //SIMO
7 f( d j8 ]) r6 A: ~, @+ y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, s# K; e6 v. C7 o$ U. g4 {
//SOMI
" b& k: S: Z: z! ]$ Z GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 k+ a7 ~8 X2 h% E, R. y9 d
//CLK
* Z$ M1 S' b( p2 _6 F# { GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 X8 V8 G* f% r% ?4 U
( O7 H9 u3 T5 S: X7 m
// LDAC
$ p0 o4 b! y( K9 Z GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. p9 b! F. m; @4 p5 V7 Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- n1 x; O: x& I8 R% Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; H: ?4 d3 \3 C& V" U
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 S6 i3 T2 K+ y. y
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ X0 ?* j8 l- c4 m/ P3 `
}1 w& u( Z1 W5 ^
9 R2 x, a( x: U( R, H: |7 l' R) f, Y
int main(void)9 w) e# S0 v' p
{/ @, R% i8 H1 U/ Y
// 外设使能
, Z- m, I$ N/ b8 Q# R PSCInit();
5 H c& a3 K0 z( t" a7 r' {$ j
* F0 B. I4 K! i+ d 6 I f, s$ d# E9 i
// 管脚复用配置
* f1 o& m' a% v0 v6 D( Q+ s GPIOBankPinMuxSet();* U4 O. V# A% n& t, U
for(;;)3 X' r& J* E' V9 w
{
+ n( ~& J. E$ @, S: O, L SET_SCLK();//时钟正常输出+ D# G+ E6 @% s% O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; A/ R! s8 P3 W Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ n8 e5 h$ S7 E) w2 b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. {2 I+ `9 p0 K5 I3 T9 R8 z3 c3 O( A* H$ O6 U- o t( _
delay(20);
) J! E6 F# ]2 t. [9 o; y' s7 Z* B CLR_SCLK();
1 l" s: H4 c. U1 R. f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, J, a) K6 u% q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
4 N! l5 b4 z" `, ~7 O& X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ c4 ^: o& _5 a' D F# l
delay(20);% f1 } K1 N3 L2 J
}& E6 B/ X$ X6 V$ ~
}
) P: A6 \. J W" D( z: C+ f |
|