|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 s1 Q5 P$ T; J, h
void PSCInit(void)9 v3 G r% M3 j8 x& M2 s9 D
{' `, V4 h, e: e' u$ w& u) ~6 k
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 {2 O" @ y7 g) y- Y. {; M/ o}- K/ |; C$ R% _% H7 c
: g1 y' |8 ?6 j3 S* B0 a& U3 O' X( ]( l
void GPIOBankPinMuxSet(void)
* M4 k0 `- N. k1 G* d9 n5 z( }{7 d$ T) Q& x l9 e- D3 C
// DRDY ------------ GPIO6[14] -- 111
8 {) j3 d& y$ {8 x$ k // SPI1_CLK ------------ GPIO2[13] -- 46+ [! [) l7 C8 r! V9 s
// SPI1_SOMI------------ GPIO2[11] -- 44; Q7 T& h1 W* S/ w; D" x8 A
// SPI1_SIMO------------ GPIO2[10] -- 43
. u& `* }& c% T q // SPI1_CS2 ------------ GPIO1[0] -- 17& J1 F1 {9 N) `6 s! l) T i) ?/ A
// SPI1_CS3 ------------ GPIO1[1] -- 18
2 M" T0 e0 m4 Z* T. i7 ~- R
, h) p, w6 {" B8 ]0 P8 K5 i# p' p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 J4 S0 z, w( N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);! }- x/ m0 _. ]) Y }9 a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
3 a) w$ D. v: X& E* K
# k3 g' K% [: O$ Q1 x7 n7 v6 W //DRDY
( B4 x# e9 g; l! R GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
5 H6 \) p+ J8 t ? // CS2,CS39 T% g! R. m- F% u% }+ K; t
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 D* y, J$ I' y* i8 W6 K GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 s+ X/ W7 [8 l/ h4 z$ m% S! Y* g
//SIMO
) S) b& ]% E; g6 K# m GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 f6 V6 {6 n+ q9 H
//SOMI
1 P5 _# ^; {. w& A GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; W' I. n( W; U# O& W! l0 w& R& l
//CLK$ q4 L' F6 [: A7 l+ d
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- H6 x9 [8 x6 v* X- T9 E. p9 p* d( a5 y! _3 J; Z
// LDAC0 q1 A/ G7 L& O- H2 k
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 K% W) v1 x8 r, u/ j4 h! _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 ?, z3 o3 {" r& i. n9 \4 F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 h0 P+ _0 U' J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! \0 S* J0 o# c% }3 ^* ?
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY H* z* ]! ]# R
}
0 G- n6 ^( U K, E b0 z
: @4 J$ V1 H& b* n9 kint main(void)2 c0 @, n, M9 I( T* i) M
{( x1 [' ]5 n7 \7 h z Y
// 外设使能
2 M* z6 m6 P ~# D9 M+ B* O PSCInit();$ y \. b9 J% W) ]
* z Y4 _ m& B, W3 m) K / O) `6 Z0 |) \4 I- j$ j7 x
// 管脚复用配置
. k1 Z( x4 q: T( S+ s+ h GPIOBankPinMuxSet();
+ f- n( p5 f! ?( {7 K/ | for(;;)5 g1 \: k' C3 m H( Q, x
{
h) t2 \' y+ d9 ]% U( f* r o SET_SCLK();//时钟正常输出, r" ^3 ?5 z9 K7 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* N" I v. M6 T0 u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* u v; u; T7 I7 |" b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN1 j; v+ E: N! b) g) T
: Z/ o! D$ M: `: q2 B delay(20);6 m9 u9 [7 H! z7 c6 C! P- S
CLR_SCLK();$ b1 C2 `7 d" [* L/ m2 \6 |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 k3 J2 \) t; D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' M3 |& Y8 C$ l; L) M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( g, {9 n1 t2 e7 @% ^ delay(20);
# D, E* ~& f3 ^" `, i! { }
8 {9 f5 Y& e! z6 V5 q! `}
: h0 R. L- s! Q |
|