|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
+ r( D' j; s' f: P# R+ Zvoid PSCInit(void). o- u2 {& E6 L' c& e# |
{
0 D& s. ~+ P7 w* |3 C+ z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' _; T5 n# r( x' W
}% a' o5 D; Z# \- [# i' B5 q
* a I( C2 b: _9 pvoid GPIOBankPinMuxSet(void): a P r: C% \1 [ V+ _' p
{( K# Z; K9 w4 [7 d7 H {
// DRDY ------------ GPIO6[14] -- 111
% f7 F/ S' h& o/ |4 P- r // SPI1_CLK ------------ GPIO2[13] -- 46
: c3 R( e8 L/ [4 D! m // SPI1_SOMI------------ GPIO2[11] -- 44
, s' T' \" k% F! x3 |& w. g" T // SPI1_SIMO------------ GPIO2[10] -- 43. k& [0 @) A/ j+ C
// SPI1_CS2 ------------ GPIO1[0] -- 17
5 N: ~ {1 E, P- |; @; i // SPI1_CS3 ------------ GPIO1[1] -- 18
. Z( ~+ L. ?2 G# U7 l C* [
; K6 e- [0 D2 m6 L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) n( p) j% d( o+ b
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 x0 h/ |5 I4 i8 @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 R8 Q# g1 R' l
2 j- H" v5 \: W( {6 D //DRDY
# _6 M+ o& @5 ^1 z- B% _1 v3 m GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 n8 l* b: c* W1 M. k
// CS2,CS3
: j; {5 ^% G6 m Q' Y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ O; Q. E- H0 [$ C7 v GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3# Q$ V9 T/ T5 r3 k" F+ C
//SIMO$ U' _' x9 D" q7 h5 }( T
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ [( V K; n$ X% r- I //SOMI
1 g! w; d$ i+ L4 f# C! W GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI# E) H8 {: m- E7 Q! m
//CLK
2 ]) s+ ]6 {; G. h- s- D GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" w# @$ { L6 o! B( f, m3 N
* Y/ w# y, p4 w // LDAC' K- B* b+ \+ k1 [, z% u
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% N+ m1 A& f) j8 S( T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: Y. c, U' q" g3 f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' H4 F' a6 D$ @" B7 U0 k$ C7 \1 p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
: U- j4 t" }. W GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY& k, B% ?: I' p; N* s7 C8 y* z% t
}
; x/ c$ C/ q c1 u
$ F7 s( \) o; e+ G$ Q& C7 pint main(void)7 g9 @8 U+ ^( B
{/ f& U5 }( P4 ]3 G
// 外设使能4 a% h& Y8 q! A7 E+ L* K
PSCInit();) v% e. Y4 x1 d
2 B8 C7 t: u m1 [% t
+ v8 P u% Z. A% B& E8 l // 管脚复用配置 T( N( n1 s$ v% i: j3 E: K/ f
GPIOBankPinMuxSet();' g$ ^8 ^ T* J" o/ `+ _) ~0 D) H
for(;;)
5 ]7 {4 ?) D/ h; J {
# A2 s$ B ?; s2 u# f: c SET_SCLK();//时钟正常输出
1 p1 x1 a, U: ~, D8 Y8 s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 H7 S# k) A7 {: \5 l* M% f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 Y7 R% h* m- ]+ B/ k* |/ u" z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
% h; d; f \+ M- y; J
/ q6 i" ]( D% V N+ D delay(20);
, w2 u7 w* R$ R% ~1 P9 i CLR_SCLK();' H: ~8 p+ d" }" \1 i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! X _$ T; R( B$ }6 H) n& \: E0 R! { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3( T; D) |+ T" D+ B2 [) \, w* i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 s# l8 Q% X4 `0 Y
delay(20);' P# i! f4 E2 y* J# W8 a6 k
}) h& G$ j8 y( [. g
}
" r$ K( U A! C# o. X* o! m4 @# j# A/ O" z |
|