|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# f+ H; x, M: d8 {5 _2 Dvoid PSCInit(void)
( w& r8 J- @+ X. B$ U{) n( @% p! ]% u* a+ O# T6 m6 G
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) s& ?3 ~0 X) `}1 t. Q7 f2 e. m) E
- n" b" j, |6 u% H2 W5 Z" ?, t. s
void GPIOBankPinMuxSet(void)
/ k! M/ k4 y, Q" W) x3 {{
3 i( `7 Y% M; @ C // DRDY ------------ GPIO6[14] -- 1114 M6 w; l1 L0 u* d" H
// SPI1_CLK ------------ GPIO2[13] -- 46
! k2 d/ A5 {1 Q // SPI1_SOMI------------ GPIO2[11] -- 44 N' J( q* U9 e+ Z% r" }% p
// SPI1_SIMO------------ GPIO2[10] -- 436 R y: d. F& a' x6 i" Q
// SPI1_CS2 ------------ GPIO1[0] -- 17
( ?( _+ D* H. q // SPI1_CS3 ------------ GPIO1[1] -- 18
& R; O7 @! Z' ? c9 v0 E! e
+ Z' S, b2 l; X" G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 s) |6 p$ G3 k4 N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);6 }; b) ^' h5 E/ b/ v! b- `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
6 t: _# N3 i; d2 e
! i6 B; n& e# P: a4 g# S- r //DRDY6 W/ Y6 q# g4 A ]6 b+ l( v& _
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! |* M; ]" \ |* }3 c8 R! ^
// CS2,CS3" e1 j* o) d' r' }" V
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ H; u1 W( Y) l8 w! [: Y( I. d GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3' ]$ n4 |# m' y- Q G8 _$ ]/ p
//SIMO* x1 ^' h/ T0 B& R) V+ m# x
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ b& ?$ g3 H* j6 k& `4 w* q
//SOMI r* t" {, C6 B8 Z: A# `% }
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ `1 U4 v0 n. u5 ]
//CLK
' ?$ D- k+ H. z9 _. F GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 p5 G. Z! S8 U' _( m. N; j& a5 \9 E' B# q: V$ X; s# ^
// LDAC
+ @2 q8 o" J1 d6 X. Q/ ^6 a" r8 r8 I GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 s5 M4 Q% k3 {9 ?" v) P0 ^/ u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ B" T6 z) W+ \5 U- S! e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 ?& w9 p8 i* a8 h, }3 ^2 ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 m% x7 t, g2 ^# H) N) s6 P" k+ R" q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
4 F! \ p! q* l" S9 s2 G) a}& B) E( ~6 }5 n% P; O+ Z
2 y ^$ G. [' e9 N
int main(void)/ _. ^2 f+ p( a- K1 a
{
( s; k9 j& k+ Q // 外设使能/ \" y8 q4 _% `# K+ h7 z
PSCInit();
: O5 x J- V: w. x$ R; \9 ^& r& v" B
& }$ f2 n7 g/ @) V' T! S // 管脚复用配置& j7 F& k+ C) Z: V( w4 Z
GPIOBankPinMuxSet();
# n- B& M9 T& T0 X4 ?! {& B, [: t for(;;)) N% v# L" n3 |2 ]0 L, s
{
- x1 i) h: N2 B" V SET_SCLK();//时钟正常输出
2 ?* j4 Q$ s; d& A2 z; S* x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& C2 o' u) r$ B, S4 \8 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 X7 k& D) j0 ^9 g# Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 x# T8 ~3 A! C/ o! m) ^( D
/ C0 m! k7 N9 F1 v. [: N1 |4 N. a8 C delay(20);
1 b1 j3 p- q* W CLR_SCLK();
( Q, `* h% ~& a7 v/ @ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' Z% M* \+ p, S' x% \& c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3/ t3 Z* { ~& A6 S+ _ T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 w2 T% B8 w, f9 { delay(20);0 ~+ F' b$ K( X7 s7 ]0 I, C& M
}
, u w9 Z6 `' }0 p}& n: Z* ^% F" _9 O
|
|