|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" E/ ?7 C/ g) S6 n! O5 y* t% ~void PSCInit(void)
$ s6 \2 _( h+ I* B7 L+ F/ {{3 w$ M9 H4 I& u& }; z( j+ }
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ t7 Q3 Y0 W0 J}- E: g9 l# d: k+ J" o# ^
5 _, N( E' T- x; m8 O6 q5 U
void GPIOBankPinMuxSet(void)! `7 n* B3 z o
{
! V' ?$ g9 H; t# S; u0 t" G" N9 [ // DRDY ------------ GPIO6[14] -- 1111 Y1 c! V7 d9 u/ t$ s9 }& ]; y
// SPI1_CLK ------------ GPIO2[13] -- 46
/ }+ c/ w1 d$ X( d( c- a; q // SPI1_SOMI------------ GPIO2[11] -- 44
9 ]2 m3 _# g# a) B // SPI1_SIMO------------ GPIO2[10] -- 43. p% N2 K D6 x
// SPI1_CS2 ------------ GPIO1[0] -- 17
4 C& C# A G2 y. j* z$ \7 K7 x# B // SPI1_CS3 ------------ GPIO1[1] -- 187 a* Z$ b; r# I
9 A$ f4 H2 O/ Q! b7 U6 [2 Q3 P& t4 R" Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
2 h% Z/ h! V9 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& l# L7 b, V# Q7 ^3 k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 h+ M: n+ V, P; _9 n' E8 t1 s, d, J& d$ d2 o3 E; y8 h
//DRDY& p9 x4 `" j3 `4 J( p ?- ` C
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY- T! U$ m/ E# `; [
// CS2,CS3, I; g: F% b$ o( ~* M
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 V+ J' q% o6 O& m GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 j; o& q/ O$ Q7 [0 n) m8 U' h7 f1 G //SIMO
1 a u+ \. O l5 R; y# y& Y8 H6 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 ~2 g6 z4 o" {7 I0 e
//SOMI _* R h& B% k$ p
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 D' F2 _5 p% e! }' Z9 \" v7 S% T" K //CLK+ p2 M( z3 N m- }( |
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- ~8 F1 g( z1 r! a& A$ g5 C; M4 a( X
// LDAC
6 L7 y* i7 V) l9 G( _* F GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 J& T/ F' \: f2 u; W% _* }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN N. t Y- ~" d0 R' m( }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* v2 _5 P7 |+ P, ~8 w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; z( L) L2 U2 j+ A
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" |9 m* y/ C3 t0 ] W( X7 m2 S' Q2 |: g
}$ j/ M" u" a! x$ s9 n
4 e7 n& ~- x/ V7 N3 z( Dint main(void)
! i' k; g& N8 z, Q1 Y. E0 Q{1 w; p# n. J6 P! ]. H. G
// 外设使能
, \- k* V- U' |0 T PSCInit();5 q% h- K4 B$ Z' g9 }) a
+ Q8 M/ o5 y* e) E8 i# X$ L
$ _% V& s8 e' n0 v# y // 管脚复用配置! z+ [- i3 z- \& v' q) x. [" d
GPIOBankPinMuxSet();
' Z# V6 n' r6 E: ?4 Q4 e2 R! B for(;;)
+ o) f8 U6 \& W9 I" p6 M {# z: }8 n- `# {: k7 g) f, ~2 K- C( z
SET_SCLK();//时钟正常输出
' J/ v* I% I9 e1 V: c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 a) U! N' U# \ N" O( I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 q$ J( C; X- t* f5 D1 S8 D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 i* { M$ X% I; m4 y: R2 x q
/ T: G# c9 S v: O; k
delay(20);3 y) E) Y% M# D T. T
CLR_SCLK(); m; r+ J( u- v# u/ f8 Z: _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
/ A$ b8 P# [8 `" [& T6 L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 Y# h4 `5 F( k7 _# M) Y3 {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 \, l3 U+ h5 a0 E0 x& T U! d
delay(20);4 {9 y& c; n. c. a5 S
}; u5 p& N t' A5 Y3 {
}
! I4 R/ P5 w2 L |
|