|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( m1 M: f0 K) Q$ F0 ~" q% Yvoid PSCInit(void)
8 u$ L) U3 f* i- t{8 v4 F1 ]6 I9 K- n0 {/ S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); g' j7 p# U2 R+ f! T
}
; F7 U3 Z; B4 Q& ? o; L8 T2 x ^, j# K, K, X; f) v6 Y; s# `* m3 S# N
void GPIOBankPinMuxSet(void)
( ?0 g+ ?4 ~8 L# {' I{+ g0 N8 ~8 p# o; P
// DRDY ------------ GPIO6[14] -- 111
! W! [2 h1 ]0 M( w U* R // SPI1_CLK ------------ GPIO2[13] -- 46, c, X J1 o$ K8 A/ Y3 z
// SPI1_SOMI------------ GPIO2[11] -- 44
& J$ N( U. N/ {1 N( W( f8 h A+ L/ A // SPI1_SIMO------------ GPIO2[10] -- 439 m* v1 G7 T- Z; N/ k- n
// SPI1_CS2 ------------ GPIO1[0] -- 17
5 X: y" y0 B( R1 _2 x1 X4 ]6 b. N // SPI1_CS3 ------------ GPIO1[1] -- 187 u$ ^8 G1 h/ y6 Q5 U0 q
% k; }) s4 S4 k* D1 S; ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ [7 G/ {; B- |8 D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% k- I3 w. }3 w5 F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( b7 j$ o4 ]3 r' }1 x* b2 i4 |0 B- [9 ]2 _
//DRDY+ r! y) G. o$ i$ Q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( Y' Y/ v! I5 _, ~$ x // CS2,CS3( k* \ E( {" s& T& S
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: ~7 J1 m/ K3 W' E9 G! @; _7 K
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
% W5 Y% p8 |" L/ M //SIMO
4 c+ y/ A5 i; U& H# Y7 f: z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; t% u8 Z* r& W$ {, p5 {, {) @* g4 c
//SOMI
0 X" b' k% }# J1 F4 l/ K GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 E o4 A7 F" E: d$ y- p) @ //CLK7 J Z8 n2 K& a0 h& r F& G6 t9 b
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 I" A; ^6 Z6 a+ w
7 A. o' v9 P$ t- y7 c // LDAC% X! i& ^! c, h! s3 C5 L
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 ^! [1 d+ l& \: N) f. M8 s8 a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
a; `: Z, g! \* X0 _9 g) d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, _4 J# i W/ ~2 }2 o e& c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 ]# t, ]8 @$ R- x f GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 c L- K" B% Z' b5 k: [. F5 X! G
}) }4 g+ t3 R( x& U7 B0 {( B
# g5 a) U9 |9 Tint main(void)
7 r* X0 j9 r4 K: u$ k{
( R; w- N9 F& u. j // 外设使能8 a) |8 Q7 Z: @
PSCInit();6 m' d) L a" S7 k4 t7 G, S
5 ?" Z' _& \3 \: u& R G
2 U/ ^' [! |, y // 管脚复用配置9 V8 e5 O" A: l) m1 `1 M2 `
GPIOBankPinMuxSet();" B+ g! D- E% _5 _2 a2 F- Z5 B
for(;;)
% j& {1 {( g( m L- u( Y) g- { {# e, o% O5 e6 e( z; q; { n
SET_SCLK();//时钟正常输出6 ?+ b: _& T; Z, Y/ h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; ^2 s4 @/ b( o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, `& o/ r2 E) g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) \. a( s8 _" X
/ b7 D+ F3 q7 i8 v, w
delay(20);0 J' d1 A0 O4 }8 D" E
CLR_SCLK();
. W! q6 }: V) X6 k& D9 ]4 _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ p1 n, q2 S& C* [. S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ t* d8 K a6 m& x7 r; F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' y4 q8 B# |% ]' c delay(20);
3 p' R$ ~: i; c3 e, F$ I }
7 Y5 m* i% T7 P}
6 Q6 X! d$ [# U2 r0 k |
|