|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% L1 o! g3 r3 I
void PSCInit(void)
! t5 j+ b# Y' V1 \& G" T& w# C{7 o9 s2 E# \& p; x* L m/ K2 ~. `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& w h2 U( c& ]6 _' h8 O' l
}1 r! p1 @4 g K( m) d( r v5 K
' ~7 s8 ^. @1 ^* {% i; {
void GPIOBankPinMuxSet(void)" O; Y$ r) l; V+ B0 [$ b( @; k' }4 n5 S
{
/ X, G0 ?- M5 Q7 x) Z8 t) D // DRDY ------------ GPIO6[14] -- 1114 z5 }6 P2 o" D1 [
// SPI1_CLK ------------ GPIO2[13] -- 46
8 P0 p& @6 ?. o3 R+ P u, p // SPI1_SOMI------------ GPIO2[11] -- 44
% Y% Q2 G' o1 L% D# u) P // SPI1_SIMO------------ GPIO2[10] -- 43. o/ F' d' c. e
// SPI1_CS2 ------------ GPIO1[0] -- 17
: @3 o1 E2 D9 n% k- x; @ S5 a( V8 K. j // SPI1_CS3 ------------ GPIO1[1] -- 18
" n! k/ D: W$ k) q1 F S8 n- R
0 O1 n1 E" T2 }; C9 _ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" o w+ y9 b/ ^" i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% K- M" p9 F) ]6 L9 [- h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) `* [+ E3 O9 t4 j; h* W
/ [; ?0 J; [9 Y# s5 J! }
//DRDY
. {* N) x3 O8 h% W1 f" h GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) g r2 j9 h1 l // CS2,CS3
& o1 T5 u8 G0 i8 j7 s- T3 e GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 J2 J/ Z' g1 r
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) v ], f/ ^% Q6 a7 n. X //SIMO
& @: R7 z) |9 p GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO) ^6 X' h% R1 C7 X0 g0 ]' U/ V0 ]
//SOMI
: T; g& x& x6 b GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI# ?! e7 {& R6 p. k! T
//CLK5 H8 Q3 j0 k: K* S+ S) J" v
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. x) `9 X+ M- x/ t* B$ n7 z# y' y7 m5 c$ k; |9 A
// LDAC
4 f* S5 u% K& c* ^/ y) X GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
1 c' Q$ Q/ E& f! c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ X# D9 b3 v i& \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& b, H* L9 p- b4 K. i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
, i8 l* c# k, ?" H X GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 s7 w, n' J' x+ x" ?4 ^
}& y& Z- [% K. b1 w3 U
4 B' h) M' c3 s W z* X- K* q* B& X
int main(void): y& B" `0 Z. T/ F, h9 c1 }
{' P; _/ k# D$ u
// 外设使能1 K) |& e) y7 E
PSCInit();1 B5 G; q2 |) F; L8 v1 ^ b8 Z
' L9 X0 i% X: k* E0 N. E8 | a# K/ x) ?4 V* G) q) O% E. F$ J
// 管脚复用配置4 ^9 {: _, g% b1 u
GPIOBankPinMuxSet();, H7 q: T( E; p8 B: M
for(;;)6 r3 \7 I" g& o* x2 o4 b0 E( K
{7 C( x) z( U' i& Q" K
SET_SCLK();//时钟正常输出% `- f- n1 x; i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! H! x/ Y! F1 ?1 v2 Z/ a$ ^4 r9 E- m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ ?5 V( `/ ^4 x* h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 K( Y9 y$ Y, k$ E' ]( _
7 h; Y) _' b# x1 |9 R delay(20);# V: [: w/ f7 V
CLR_SCLK();
3 j) X+ W0 Q; m/ ~2 Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" r+ ~3 j L$ B2 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
|8 h8 H. |" Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! D6 ^& {; W. ?, R/ C# o* g2 q delay(20);2 [2 ~2 q4 F1 v! ? {
}& p0 t: h4 `9 M% o
}& \5 c, }5 m, U% B2 d
|
|