|
|
使用下面的例子代码,不能使SIMO和CS为低电平:5 ?$ j/ b3 a& k
void PSCInit(void). N& d2 L9 x o- K9 g
{
/ |7 F& v. m' M- V PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, J9 o8 T7 Y/ L! G- g
}( t, Z. p$ q- ^( L n
) I7 y! m7 d; N5 j7 `
void GPIOBankPinMuxSet(void)- I3 Z6 Q/ d! D' o q9 U# ~
{% ^, V% W4 H, N
// DRDY ------------ GPIO6[14] -- 111! i ]8 ?& ~3 p( B( W
// SPI1_CLK ------------ GPIO2[13] -- 46
/ F+ t9 U$ i+ \8 O // SPI1_SOMI------------ GPIO2[11] -- 44" |6 B/ J" d' l% N! f
// SPI1_SIMO------------ GPIO2[10] -- 43
% G# a7 `2 \5 L8 c$ H // SPI1_CS2 ------------ GPIO1[0] -- 17
/ C' U2 F- n" _5 H // SPI1_CS3 ------------ GPIO1[1] -- 185 t4 K9 F8 F8 F$ O& ]8 t9 Q
0 X) C( T8 w: _ `- Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- S% C2 r' i4 d. W/ ]' J$ J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: t# V1 i) o5 y+ ^3 T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080); b) _2 X+ Z2 I r% d1 C- z6 B
; H( m( u) P, W2 d n, j$ Y$ A% ] //DRDY$ Q( A: U( _& D& R
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 B0 R h" j* ]! ^ l1 O
// CS2,CS3
8 O+ V1 K5 P, t2 H2 i/ Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
2 _1 d+ ]% X7 J- _( I; k: f& Z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ B# [6 j' L' ^+ a7 l
//SIMO
" d: X) S& ?! q. y- K GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
7 R1 t- j1 e7 N* m, U //SOMI% r3 M! \7 Y; v8 g' L" E+ W
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 k8 ~/ R! q5 Z5 O1 h# Z, ^ //CLK E8 H- J, B* b5 [; {
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: ?4 G' C8 U2 @& `1 k( F- E
" N& Y& o0 @: |" i# d // LDAC4 [: \4 v' U7 h8 h: I9 s6 j X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
% G3 c7 F1 b% _) O! r9 F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 e7 k0 S$ P5 T: i u5 S" P
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% U9 [( N" v" T0 f* s8 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* \5 v& e, t) y- Z$ Q1 C3 r* u GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ \7 r4 H' }+ R}( `& s6 E5 D8 ~# k
5 j4 g2 m. D& ~: W) Qint main(void)
1 P3 p/ o1 M, h{
2 a8 x. y) i. M0 L // 外设使能- G3 \8 ? v( `! O) |9 z* j, y
PSCInit();
; [* v8 G D1 B. h1 w3 |" b# d
, T* ~; X2 O) t2 L1 Q% d6 w8 b; S9 l
$ R8 t3 d, ~7 b. O4 t7 [( \ // 管脚复用配置! n; Q. u) |, L
GPIOBankPinMuxSet();
$ n5 `( U$ h3 L3 @ for(;;)
' ]/ n0 x* z1 R* w {( [/ d% C. _& ^) ]4 ^8 v6 g3 b! t
SET_SCLK();//时钟正常输出
. j# ^' ^1 ^! W" M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- m( r# w/ X! P9 f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' T; {5 _8 e7 x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 d& [, G3 j/ h. {" J3 j0 g
% e/ [/ S5 w- H) B+ O delay(20);/ s8 \4 T/ J, ?( H
CLR_SCLK();7 J" \+ C/ P2 l3 y. F7 ~; M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, o# T* M* v0 V, _! {* g1 x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% j! }; x7 P- S
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 P, |: q1 O& [; A/ \. {
delay(20);
3 S: q- z! {& P0 W4 w0 l }
/ I ~* K! ^0 F9 o' D- f! \: X1 {0 s}
( ^& `3 x- r: Z( r! v# z/ V8 L |
|