|
|
使用下面的例子代码,不能使SIMO和CS为低电平:0 h& x! x" D; h+ R% C
void PSCInit(void)& K" Q8 [ v# ], x' ^! A. m
{4 Y: z0 I, q5 o1 i. ?
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ `6 b! |# g- z! w' `5 i}
7 `+ S" U! p. J# |7 m. _" c7 V V% c! e0 X; S! U2 f
void GPIOBankPinMuxSet(void); o2 x. m/ t# z6 v. a$ R, V
{) J4 { @! R# k# |+ Y$ b
// DRDY ------------ GPIO6[14] -- 111
0 X8 o5 V1 u# g+ n% ?5 p/ s; m/ p // SPI1_CLK ------------ GPIO2[13] -- 46
) I( g: Z$ K! F/ o$ k // SPI1_SOMI------------ GPIO2[11] -- 44
! s8 Q# @8 D+ i2 h // SPI1_SIMO------------ GPIO2[10] -- 43
3 z; n( g: d& U3 f- @* r // SPI1_CS2 ------------ GPIO1[0] -- 17
8 B, |3 s# P. X2 W" Z+ f1 U+ F // SPI1_CS3 ------------ GPIO1[1] -- 18
8 C; V* u" U1 I( H% u, @" N( ^/ \2 ~- W- j; [' Z* Z8 c( ?+ C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. v g/ E9 x5 J! Y: d1 v, B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" U( l/ i! C4 a3 D' w+ z d4 ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- [2 } X4 ?$ k9 F0 [% a
) a( z6 c5 a( J/ {( U7 H: V f. o //DRDY
* y6 \' ~, l: v5 E GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) s$ K' Z6 a5 o
// CS2,CS3
3 Z( S% c, X4 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 `* d% e( c \" r8 S
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
! O* b; v- d' X //SIMO. S0 [( Q6 e$ t! S! m
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
5 Q0 o* O; Z0 Y) Y8 v! H //SOMI, f; @( O) v' D% \* s
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ i% O2 Y& Z2 T9 P9 ?
//CLK
6 X* e0 r# m& @8 Q: s$ ~$ X$ O A GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 j6 \$ r& p- [ g1 M& k6 D. y+ l7 r6 l# A5 G5 K
// LDAC
: z: q1 j$ Z& i2 L, } GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
- B4 C* F9 @$ L) \* r0 F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 C" K2 f; ~$ i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 \2 l! A6 g, ]+ b) Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
, x9 e8 a. J$ ^* _; O+ M* n GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ O# T! N% A* b6 `. D
}
# C" @4 f- S. X* w9 b% ?2 K7 b2 _, o, S' _1 p3 E+ k0 P
int main(void)
/ }( \( {1 h9 A6 t. }4 G: m, a{
$ W* G7 J* m4 s% Q" O& _1 E$ Y# { // 外设使能+ j7 b1 t8 d4 v0 x. r7 e2 f9 Q1 v& n0 L
PSCInit();# p7 D" e: ]9 ]. V9 T1 t
% X. q: J8 W- |4 H9 Y/ J $ z' s- i% z! e8 s; T: [3 K N& C( _& \
// 管脚复用配置
, O( A; @" u8 @' v GPIOBankPinMuxSet();
4 }3 P& v* S; I# I( D. l for(;;)
" q+ U% a! @2 E; b) D7 B2 ~( V {! P8 ?) @ z5 q6 p
SET_SCLK();//时钟正常输出
: R0 a- N# C+ E3 | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: D& n9 f8 G3 m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS30 m6 O- n% M+ s6 g$ K2 ^/ b+ M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 \- m+ B2 O8 f5 w
6 i" F' n U$ H& d% q delay(20);
! D+ e) f( J, d CLR_SCLK();- B' \- v+ M5 Y5 e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# w9 Y3 ~' v, |5 H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS33 V6 B7 S9 y0 f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 Z, p2 d) w' w: O7 [ delay(20);
7 i$ n4 \" n# X2 U$ f( U3 D }
8 [- N, p) K& E! P; o}9 ~+ o5 p7 p% _7 L( n* r4 s
|
|