|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# i% u" E8 P n2 P
void PSCInit(void)% w, C8 h- T, D5 T+ g3 o2 e+ e
{" P* n. |# Q0 E: e
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ t1 _% @- @. B, k* x% G
}+ Y8 s! p! n+ B( w: E
. B6 P8 o9 ]& F9 M' c5 M3 o
void GPIOBankPinMuxSet(void)
$ x3 d8 ]' w- e( O1 [. j{/ ~6 P5 s/ R* i8 q S% n; x* D
// DRDY ------------ GPIO6[14] -- 111
" ^- J& l" f5 k // SPI1_CLK ------------ GPIO2[13] -- 46. {' e# A- O! R2 H" Q: e
// SPI1_SOMI------------ GPIO2[11] -- 44
2 ?* z+ f, }) P" M+ O // SPI1_SIMO------------ GPIO2[10] -- 43
9 q7 I# m+ P( y0 y3 n8 _, T // SPI1_CS2 ------------ GPIO1[0] -- 17/ p2 W% Z, P, i
// SPI1_CS3 ------------ GPIO1[1] -- 18
9 V0 C) t7 e- Y) G# q) |
' Z" e; b, H5 R1 ?/ u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) a- m5 t, l" j3 `0 Q7 F+ ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% |! K2 |7 |0 n, l( t, s1 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) B2 p- h% @- o# m6 T/ z4 x0 e
6 Q7 M* v8 E- s; [ //DRDY
5 D6 T/ C/ O7 p& J: z- d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 o% s/ c7 G1 V/ t4 F8 G* T // CS2,CS3
' @: ~" K+ t# w' Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ J$ P1 f% ?( z1 ?2 s
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( ] F7 E- b% y% l. n( w8 E5 W" ] //SIMO
' X# i: j; q% b* ^/ B- R) g GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- o; F* p' G" D- G' S //SOMI
0 c$ I$ g4 j6 _1 y! G GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI- L( p$ O/ o9 A
//CLK
& h6 `3 z5 D2 C( B4 [0 j) Q( |+ W3 q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" H9 D- Q* u3 k, b' p. @
1 e6 u6 A' h) O' `8 b7 j8 s7 f7 e
// LDAC \/ G7 n6 L$ A8 d" J* @9 r& w% o
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. B4 S; O; e$ \. N: t5 _! k6 |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) U* h$ h( _5 S) U/ c6 a0 { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( z6 S: a& E" B% {4 i7 \( W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& X" }# O7 R0 ~9 g GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- o0 S: i5 ^) ^6 r T3 r! D}
1 b N# z" B$ t d8 A
, b$ b, ^/ \8 o2 ^0 Gint main(void)# O4 r- d8 h) M1 n! C
{& c5 L6 I0 W% F+ S' p2 A
// 外设使能0 n: k) _: U4 T' L9 n+ J) J: x
PSCInit();/ R6 O0 U, [$ [ x( v; b1 q) T+ L! N
, K- O& A: s I8 y ( R3 [' l* ~1 }
// 管脚复用配置
, M" R! n3 ]4 L9 _) Y+ t5 H+ z GPIOBankPinMuxSet();8 \* a7 g$ T* H
for(;;)
9 T- p M* t, \7 M/ h* W {( H" |& L" s; [4 i3 s* W
SET_SCLK();//时钟正常输出
5 \& L2 C5 n: t2 p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 H$ a9 M, F2 {7 n6 V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ ]2 E5 l: l8 b9 x* U6 j! M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- q) t: B' @( V" w! k
6 `- s) c3 S1 Y! F- E" m6 c& q
delay(20);
* ~3 I$ S* ?' m, C- X CLR_SCLK();2 E' t G b- `) U6 Z9 p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
) h! F7 a* L! [7 c0 y7 b GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& \3 c4 c$ g+ z& b' o# K# j1 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" C5 I8 _# i( i* ^6 \ delay(20);
+ B/ g- a: U8 ?3 v% z" J2 Y }
/ C. h g' S/ G& \}" M% r/ B# `% x6 ]8 z' F
|
|