|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; `0 G( ^$ M' [/ ^
void PSCInit(void)& l7 t3 N$ f! O! n
{
" X8 q9 O$ k/ `0 D8 t& S H4 d PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 r: s) H/ q/ W# l7 U7 ]& r) ?, a}
& {5 L/ T2 t7 l3 ~; |. n' k: A
$ W' w+ W F! n, e. p% s1 s: bvoid GPIOBankPinMuxSet(void)2 K0 S" I3 B& n+ S# ?" ?
{
1 G! N) l7 a6 a5 E // DRDY ------------ GPIO6[14] -- 111
" l/ Q5 @$ r. b. |: @9 }; m // SPI1_CLK ------------ GPIO2[13] -- 461 o, p u! A5 m- b3 ^* s
// SPI1_SOMI------------ GPIO2[11] -- 44
k! ^1 o1 {' E$ V9 U- q // SPI1_SIMO------------ GPIO2[10] -- 43
- l; p* G8 L. J // SPI1_CS2 ------------ GPIO1[0] -- 17
4 ~8 f Z3 M' l; n" R // SPI1_CS3 ------------ GPIO1[1] -- 18" l2 g/ p% `. X3 z" k4 R
7 u) n4 Q% z B& U& e7 _( x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, Z! i2 n3 l2 h# f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
' _+ {! d1 a9 ?6 D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
. A, m' ~$ l+ e- t; ^' \1 }0 H" c5 T
//DRDY
4 d1 W z+ m3 q( ? GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 B$ w* O7 H4 {* X // CS2,CS3
) _( m4 R8 Z' C+ v0 }% I: V0 c5 W# N GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& F' k9 ~0 r$ a& c GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3- Y9 P! D4 h' z5 h! a, ?% X
//SIMO
1 b/ l" z% Y) l* D Y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 o& Z/ Y, m( r
//SOMI
+ }$ X% |. F0 a7 P, `. [9 w GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI k1 p6 x/ U. m( y* L. _; |
//CLK
0 D$ r z% t8 d: ]3 @9 `; Z& B GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
1 X$ v2 N/ A1 I) `. ]6 \; F4 R5 x0 p2 J$ o v
// LDAC1 [3 ^0 K3 j/ f( W! u" Y
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* z4 ^2 p7 q; K7 M2 P1 [# q; d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, I# {$ S- u0 y! s) P5 A/ u% h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; u& G. F* v$ p& m1 A( p/ ]0 J( U
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 l3 \9 w3 H/ B( E( G GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 K' G% b" ~4 l( k$ E' a0 m" S$ F4 _
}
' O8 g" e- b# A
! N |- K; K% ?* _3 hint main(void)
" R( n+ Y0 b$ J; ]4 @{
% H$ X3 I7 U9 W7 F) d" r9 O // 外设使能
! e- ?; s/ \3 B& s) P PSCInit();2 R, Z/ O- q; z! R' x0 w' g
2 M, w+ y3 S0 ]$ D4 T7 O
% I" w0 i) ]4 o' x // 管脚复用配置8 ~3 d, M7 S5 J9 ~+ K$ O4 X" {
GPIOBankPinMuxSet();4 o" r+ o1 ~7 S' m1 Q0 a
for(;;)
, D1 W0 w/ E, O" y& m8 b {
! ?9 D8 A& S0 u SET_SCLK();//时钟正常输出- S* M( ^; F- u4 \* \& G: u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" A9 ^# v& R1 `7 }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ h. V# W! D1 ?! L8 d n, c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
+ w/ j7 y6 k/ ?1 V# C# ]
6 f" i0 Y3 _8 q delay(20);
; b7 x$ a9 @- d; S6 j1 ]& ` CLR_SCLK();
& Q2 S: E: g4 g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. _% y7 r2 P8 X5 S a& w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 X0 i6 J& J/ ~: P! O. G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN k4 h0 z+ s1 j* F/ p& H
delay(20);
' z4 l5 w z+ y/ | }
/ N* C" o! |) a: j* G. s}2 }" A* r0 L, N( k4 R' [
|
|