|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
[5 F: c6 z5 z1 B: K! {) W0 hvoid PSCInit(void); U- k' R5 P4 \ _! g$ ]6 e
{+ Q( `9 V4 G! g* Q8 b* _
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
, [ l. n" ^3 }8 K# x3 D5 Z5 G! ^}
# h+ C3 z4 V; I% o/ v1 B
1 n' ?9 [* G8 e' ?4 N7 x+ h, |& mvoid GPIOBankPinMuxSet(void)
" L8 ]0 q: x% q3 N{ o( y! s! G- C. K4 Z/ L
// DRDY ------------ GPIO6[14] -- 1113 o- ~ M' R. l
// SPI1_CLK ------------ GPIO2[13] -- 46
) E" C2 D' Q, K% Y // SPI1_SOMI------------ GPIO2[11] -- 44
, {4 B& G. M: F9 d // SPI1_SIMO------------ GPIO2[10] -- 43
8 w* R* A" I$ d" p9 N4 B // SPI1_CS2 ------------ GPIO1[0] -- 171 e6 m5 T+ {9 G1 }% V
// SPI1_CS3 ------------ GPIO1[1] -- 18
. O' Z9 X$ z4 N [0 [! t6 N% U: S6 [$ r% e/ g+ l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 x. v% C( F$ n6 ^
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! ^- Y' P5 [ B+ c) S. i% f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- x8 Q, `1 i3 v
) v* Q( l1 c8 s' b7 P" q o* V //DRDY4 m# j! Y- E' g' ^. u2 e- `1 n
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! Q) I1 e* v& Z- f0 m/ W+ ] // CS2,CS3- G. p; [/ F7 t' S# B- M
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2( F; k. f8 f' o2 l2 O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 U9 e0 d& R+ d3 O( i //SIMO
z( b+ F: Y8 q( B GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
' _8 X6 m- ?- d+ X4 Z# T% \ //SOMI @ |' S/ k; {$ b) b1 p) v- `
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI6 i1 u, ~' w. v# {2 G5 d1 m7 O5 J! y
//CLK) F( @' a) R1 j. E* P
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ ^$ A) x, Z& P' s) q& v7 _
( E8 _2 `$ f2 A; \
// LDAC& v# g/ Y' r2 P
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
U$ S2 S. {, _" R* l2 W1 N3 @4 S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& _% Q% ?& N! G7 X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: k- J/ H7 ?" V7 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. G" Q% ]! D* X$ i2 U GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' d: T8 i: @3 z( a4 X2 M}! Z+ B N! X/ [. h( ? `
$ T5 q7 {, a0 r
int main(void)
- w2 d! T! ]9 l{0 Z- v) L5 F; t* p% t$ G
// 外设使能! P) J; x/ p" P
PSCInit();0 V& Y6 `+ l' A9 ?
$ U- ]6 ^# U6 \/ d$ V
% x2 w/ t8 n( r+ C- Y$ r* H // 管脚复用配置
7 \6 F3 ^# e+ J- D( J. D W4 N GPIOBankPinMuxSet();4 @( C: g) j! D8 @! D2 w. c
for(;;)0 D8 ]( Y3 ^1 C7 }& e# u8 e8 @6 R
{
4 Z }7 t- G: G0 c" F! ]$ d( B& q SET_SCLK();//时钟正常输出" g2 X2 a6 S q9 [; J2 S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: w" M% s2 T3 a0 g. ~% U, ^9 ^6 C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' B$ m3 w! }9 p1 O( H: B& G6 U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; |" j( C1 R: ]3 J* F! N9 W- e
# P+ c9 l/ v& Y( n1 F6 l! i delay(20); p9 J/ o+ q6 v. N
CLR_SCLK();8 o# @5 X1 s0 P6 m; j8 N4 ^1 o9 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 q/ w4 e2 ~+ e) m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3( Q& {1 ~- }% e" u9 l% v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, C3 T4 ^; k3 ^% c* x- J) f
delay(20);0 g& ]5 E7 y7 D4 \
}' S' w+ u2 V3 F7 {
}
, m6 e/ c" w2 [" s+ ~5 L |
|