|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ G1 Y/ M3 \' e9 ~
void PSCInit(void)
6 x7 L; z6 ^1 }2 {1 m# W( v @{! f0 t. [" h& s+ L/ r: V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% |; Z5 O4 c' w1 _% \4 Q7 d$ O}
! J0 @! S( b9 q
5 u* i! _4 |+ _9 }# D0 Jvoid GPIOBankPinMuxSet(void)' @- Z4 X8 F8 V: }& p9 l
{
* m" b; b0 z U' M, K& l* G // DRDY ------------ GPIO6[14] -- 111& U @8 s( p! x' g5 v- \# K
// SPI1_CLK ------------ GPIO2[13] -- 46. A3 r' L& ]8 i$ _3 E; {4 c
// SPI1_SOMI------------ GPIO2[11] -- 44/ Q9 O6 M. r, k3 Z; e+ N! ]
// SPI1_SIMO------------ GPIO2[10] -- 436 p1 D8 ]3 ^% m) w$ ?3 k
// SPI1_CS2 ------------ GPIO1[0] -- 17
9 ?/ V& m( e+ W3 o0 {. z) ^ // SPI1_CS3 ------------ GPIO1[1] -- 18
) a5 }" E! L9 e6 }* e+ v$ i
8 Y/ {$ |; f5 Z* y+ ~' ^& L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 a8 S0 v. P$ T% r- N8 A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800); E$ `8 O* ?/ m1 z6 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ B, }& ]7 p# @# u; a" h* F
) W; f. n# @ {/ g- T3 H( @, N3 ] //DRDY* p! W% @. [7 l
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& Z" u! i$ K, d2 K7 T // CS2,CS3 P9 U) y3 D9 M$ o% ]5 q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 a1 P8 e* {$ r' c. b. v- p
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, f- G o! d) o% ~$ b
//SIMO' z. i! N# e3 s3 u8 o# D5 f2 }' i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! `1 \. t6 | a: A4 x3 [
//SOMI
8 n/ p" R7 J% {% M3 _ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 Z1 z+ j/ ~2 j6 \$ [ //CLK
- _, `: |/ ^4 x9 ]. i GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! F5 g( h% X8 u( i2 Q: ^& g: _6 V( `. U
& j/ r2 Q t, \5 ? f3 l) m // LDAC* q0 O9 P# g- Y
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ T, ?" i/ P- O4 V! P% G$ F& k! R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" ~ N/ m# j: c7 G% l C( w/ T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 g4 I- V8 o7 Z3 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ v) [) ?8 H# Y2 _( A7 r/ y/ O l3 Q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! i: _. `9 w g4 x* n
}
# Y- s$ L9 _: R, K4 ]
) ^3 I( f9 u! z3 [) T$ b; A+ l% L$ uint main(void)* @. p9 P& H' z
{9 O$ F. ^: X0 q1 a7 e0 N
// 外设使能
9 c: L B2 O' \2 A5 B3 h PSCInit();. y9 }1 _4 j$ B* X8 y1 o
5 q$ D# x1 r7 t9 M3 A
3 j5 s0 d4 n( K3 y% o( ]/ T // 管脚复用配置3 B0 B q6 m0 w a* ~, m
GPIOBankPinMuxSet();( c! q7 d3 F! K6 ?! W6 k5 J h
for(;;)
6 X- Y/ ^* N: T {. D+ k4 M: L9 G6 F
SET_SCLK();//时钟正常输出
7 X, o1 S; C: S GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& o& ~( h- P& @5 b6 m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ `' l7 a% h. r( {8 Q9 {" n6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 n6 p( t: N8 X. I) e# H$ ~
7 f" p3 e# c) p4 _9 ~ delay(20);0 @0 i+ \& c/ @( t- E, d
CLR_SCLK();. Q+ n) Y) a. u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 H2 s4 P* R( f6 ~5 J) @. D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 ~" ]% @" f8 b1 W7 a- t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 `4 V2 V# d' v! e" J& `: i delay(20);
" M# s2 {( V' x; o" a }6 r) s0 o# K/ T' C+ |
}, H$ ?( n) i" {/ A
|
|