|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
8 v4 o& @+ O' d, C2 Ovoid PSCInit(void)
! Z# P! Z& |5 f# }{+ o% Q6 c$ a2 B
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! v# [1 p3 \' g! j3 ~. S2 g}
4 |% S f6 v5 M* l% f. K# J% N5 B+ N2 d" Y" N
void GPIOBankPinMuxSet(void)
1 e; |% d; M. a- h! b{" p3 }* V2 W0 Y
// DRDY ------------ GPIO6[14] -- 111
3 y+ }0 w9 D& H) | // SPI1_CLK ------------ GPIO2[13] -- 46. z: ~/ e1 y5 M! Z8 l6 y1 h
// SPI1_SOMI------------ GPIO2[11] -- 44. h+ z g/ } I2 K5 s+ S
// SPI1_SIMO------------ GPIO2[10] -- 43
! t6 z1 v8 [5 v+ [ // SPI1_CS2 ------------ GPIO1[0] -- 17
7 X7 \2 ^" ~' r // SPI1_CS3 ------------ GPIO1[1] -- 182 [ i) ]* H' } z
9 m. @: {8 L" d( X$ z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 ]' O- U, p& x, p4 L+ D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( ?7 W0 m( e8 C& r1 f4 B7 K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' `) f) h- U* G/ J2 g5 V
% x7 J/ H( y3 C2 c, b //DRDY
( O$ d& o* o Y% ?, `, s6 a8 p% a( E' R GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY: z) V: e( J! ?6 C
// CS2,CS3% i) n$ ^& }: C$ t
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! t' O( X, k! u: d
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
7 t, q, \7 H" I2 N+ D2 A2 C; o //SIMO
! {7 X y" p8 j& [+ e! i GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( o7 o! I, T$ y7 @1 \( R+ s //SOMI
. @( d# b% m a9 x9 P. I1 e8 ?9 X GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 g$ I- z; `& Q
//CLK7 Q( I* o4 ~" s2 C: n8 F. O
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- |! p, Y7 f* M, |5 W( l4 l' i6 [4 q. V! c0 S, h
// LDAC
2 f( K2 M0 U+ H7 P1 R GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK- x; ?( o/ \, D8 g8 [4 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( f, E3 R. X! {5 d% ]) ^; x j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! r! Z, H, J, |% t+ K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 g/ H r0 k+ v6 A8 l8 b. S* F GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( d/ t4 _# p* h- S2 J6 x9 s
}
0 l: u- S! u2 h3 L; U% M" ~( U
$ ~0 E& q( a4 _5 |+ p3 t( x7 Uint main(void)' d: t0 L' F F* }) v) P% m' F) ]
{
# G. ^) i( D: t, E4 U( j% [. ] // 外设使能
* z2 h' a/ i5 e. V+ J3 w8 c) s PSCInit();8 E4 `& t7 P$ g4 b8 ~8 y
8 p: n% ?0 Y( c: S6 M, h1 f5 U) b: g% J " ^3 M3 m+ J( [& i9 z
// 管脚复用配置
) S& G$ z! l$ G* Q GPIOBankPinMuxSet();8 [5 ^ r# W4 g: ?0 ?" |5 }
for(;;)5 y7 i! q4 b% w
{
1 H$ P4 W/ |7 L, B f# n+ q+ k SET_SCLK();//时钟正常输出' M. q3 G) p) I5 ]- ]$ k2 i9 U
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 c: o6 o% H. O6 g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 j/ y2 l8 P" @% G! n/ W, B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN( D2 d. D' m$ s- Z7 ^/ H( [- U' V& q1 w
! L4 Y, \ @# }- ]; F
delay(20);
! Z0 a8 d( s* X) w# H CLR_SCLK();
. v) R( g# \* _* Y3 D7 {7 o2 | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; C4 n$ G+ ~' Z- h. d' k
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& u! Y5 }9 Z' Z6 D& K2 ], x2 f0 f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 M8 e! e$ h( y7 [, b N) D2 _$ y delay(20);) y a: K, T! g: a' L5 T
}
/ L, y% o2 W0 k}
# S- l8 `7 _1 {9 a- u* [4 O |
|