|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' r. O8 s; U7 |9 \void PSCInit(void)
2 u1 J9 p3 j. m3 L6 \% N{: n4 q2 q; q( f! X% c/ [0 P0 E
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
: t$ X2 m4 Y& H}
0 e3 S1 V9 o; g$ w: H. n" T
( \. @4 ?9 s1 y! ^void GPIOBankPinMuxSet(void); [7 x* G8 m" ]# X6 T) z8 `
{
( d3 @, n9 m# R2 f. h! e* a // DRDY ------------ GPIO6[14] -- 111
$ g5 U; l3 _+ q9 ? // SPI1_CLK ------------ GPIO2[13] -- 46
# r% U5 f; V' n/ {4 a // SPI1_SOMI------------ GPIO2[11] -- 446 V/ A% H; d) M, ]& Q+ o: r8 O
// SPI1_SIMO------------ GPIO2[10] -- 43% h3 Y; o3 s( d, B/ u" H
// SPI1_CS2 ------------ GPIO1[0] -- 17
7 Y- H' @4 U" D8 B. h9 U // SPI1_CS3 ------------ GPIO1[1] -- 18, o, @, }1 L$ ]: a" Q- e( [2 K
" k5 r7 x! ~$ P% m' ]& N2 n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
1 j; }0 j# z/ ^" @/ e& L/ Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: l( b; r7 r6 I4 C% M5 | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
* |* u6 H0 L: y8 C+ c( |- I
$ I4 t+ L, }" f //DRDY
* W; [* Q. `* l% x; o& b! ` GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 C9 k r- a, v // CS2,CS3
E( A' X/ d }7 ]/ X$ t GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 w! m0 k1 f7 A
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 }/ D8 N& {2 V1 ` s* a
//SIMO6 e$ W6 y6 M N1 `8 ~& ?
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ v7 b+ c+ r, o' v8 z //SOMI$ Z0 @3 s; x7 Y4 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' i9 I% W& f0 U5 V- ~ //CLK6 U: n) C7 H" p. T4 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 \ Q- N( y I, I- N
$ g9 ~3 w/ }8 Z3 D+ f // LDAC" Y/ p3 S. u' _" H
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK7 L3 Q) ~. F8 t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 q; T2 Z, u3 |2 C! O* B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 r% ], N+ @$ \. D) Z& E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 v6 L5 G. j, e, p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
# ?3 r& H2 Y! Y. W}
3 [, b6 v0 E j, J1 e
2 r3 ]8 i; g6 E6 z( Uint main(void)
3 k# I8 N. ~% l1 B! R% b{
6 S# o: r# [& Q% A& K( v- |7 F // 外设使能* q) K/ }5 g) m& V
PSCInit();
, e5 t# c7 c2 W" j' s' ]$ D: C! r1 A# g! A8 ~& e+ l: o& e8 Y7 h
2 ?6 T* E0 S/ e8 Q( Y
// 管脚复用配置, g/ R8 l! N( f5 q" M
GPIOBankPinMuxSet();% ]% W- p8 f/ W3 }! O* D+ K8 m' Y
for(;;)% E; l% \: e1 Q1 s
{
9 U2 y8 ]% a) h: Q5 R SET_SCLK();//时钟正常输出
4 S0 E+ C2 Z1 {( K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; A `/ b$ j2 w/ i$ D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ B/ B5 q! e0 R+ [( l& f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
- K. @% I# Z# ?5 T
* ^% N9 N3 N H0 F& a delay(20); a/ l9 h3 n2 o$ \. ^5 o
CLR_SCLK();
, r1 Z1 {2 e- V) l! U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 |- q9 H: _9 k% [& @# ?) j0 q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! K$ u' e6 w0 ~% ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! O0 r' e" M5 W* E1 j delay(20);6 G* l% M7 T! Y* }
}
! p# d$ G( L# O& E. X0 W+ m) `}
. O" t' w. J+ p |
|