|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
* z9 ]6 \( F: |8 Mvoid PSCInit(void)( s4 v1 x) [# Q0 B* f) n
{+ `6 @$ Q0 I- `2 v1 O
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# k3 E& A" t# Y- H
}7 w+ z! O5 V9 Z
% C; f( b5 t: ?void GPIOBankPinMuxSet(void) t2 A3 K* U+ e2 T
{
6 u. ^9 Q* K! M$ a0 X2 \; x // DRDY ------------ GPIO6[14] -- 1110 D& X* {5 `" i
// SPI1_CLK ------------ GPIO2[13] -- 46 Q3 ~/ V. N3 n
// SPI1_SOMI------------ GPIO2[11] -- 44) n; i& \# ?, w* N4 U
// SPI1_SIMO------------ GPIO2[10] -- 43, n& x9 `# s- \( p! v$ C
// SPI1_CS2 ------------ GPIO1[0] -- 172 {0 n5 s5 {+ {7 L( J8 I" v) z) B y F
// SPI1_CS3 ------------ GPIO1[1] -- 18
) }' u0 @9 N2 {" |5 v! j6 `' Z+ B/ ` w' z# j, n4 Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* }( a% J/ N/ \- g& n% s% _( V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ E F) l$ ^8 i% y9 c
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
. \/ P: X6 ]0 F" b+ x* y* P: d0 @. K! j
//DRDY7 \: u3 ]8 l4 ^7 M3 }
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% R- C" v/ q. s L& f. Z
// CS2,CS3
% d0 S) p, O& M6 b, D! r( g GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
- X6 u3 q n! j GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
7 o2 Q- k( v$ |1 ], b* S //SIMO9 _* x. Z, {2 g/ S
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO2 B+ k- T( z! t
//SOMI
* G$ T4 \# Z, ]! Q1 Z% v& @ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI) P0 Q8 f9 b9 P$ P
//CLK- c7 E' v [! V+ b! z, E' O9 `" b: ~
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK, d7 n3 t. R9 w2 r6 J* H
! ]1 Z% X; v2 {# @2 ] X) j
// LDAC" c( q; ~4 c8 O( Q9 L# s; L
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK; r, P5 ?4 ?) o% g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. ^% c1 y# H1 x1 P: U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 s5 i& r5 _6 h8 T& Z( d6 f0 l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3' c/ A% K( q0 ]+ B
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY8 ?5 K$ P p0 M! H" ?- |
}: p4 S" f8 T6 j' A+ t. c6 ~
5 d0 f" Z3 B8 r2 _- d. O3 G
int main(void)5 T& R2 u3 C1 f6 c1 o
{
( t1 p' P0 @4 Z& U9 @ // 外设使能; |5 j+ O1 P* y) p
PSCInit();
: {) L: F0 I0 J) a. M# ~/ ], r1 G* M# E+ K$ i( y* c
* M* q6 g; V- T8 z* O // 管脚复用配置
7 k' ?& E' J- |. e' S8 ^8 q GPIOBankPinMuxSet();, Q3 n+ o4 y f) L: l+ r* W% X9 M0 n
for(;;)( U1 X8 }/ y1 S/ o" I* b
{
1 C) R5 C6 y/ g2 X6 g3 Z8 h( s SET_SCLK();//时钟正常输出4 O* s% R. y" v- ~( ?- k) m" t; B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 v9 K4 P. {. S; N( ?4 C* C; C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 W$ I+ `8 z5 P2 C- R/ w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 ?7 C. |5 Z. _- I: }/ X: \( y' H! R! n7 t7 P# t
delay(20);" j. Z( J" }+ b' O; g2 X Q6 h% Y" ^
CLR_SCLK();! [. M' C$ q0 V# M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) V0 v) `- @) ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3. @8 {9 x" a# p1 [0 v/ F( m- \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" q: ]) G- w8 S3 p( I3 F5 o
delay(20);- X' X. \7 s) f2 B% l& N2 P5 r
}
- m( g( B' n' F( O}$ w# Q+ @) ^# `; V4 a7 q
|
|