|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% ^5 z ?/ X3 ?9 W: U8 Q8 I% P; O
void PSCInit(void)+ @0 ]7 C4 d, V. v% r& [5 x8 Z6 c
{
- ~/ u; g: |8 E% V0 T( o PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 j( u/ J: A, L. c
}9 o D5 I" l5 k% m K4 y
2 h c6 x/ m% D+ V$ [ D0 z6 r9 B
void GPIOBankPinMuxSet(void)% B5 ~6 o$ w8 v1 r% \/ O# X
{
8 c7 L6 `5 F2 D5 k/ C // DRDY ------------ GPIO6[14] -- 111 P" s B" e! D' r" V8 t; ]
// SPI1_CLK ------------ GPIO2[13] -- 46
3 f, ]2 U% d C5 l: k: ] // SPI1_SOMI------------ GPIO2[11] -- 444 P9 w5 r3 b# p# a6 P/ R
// SPI1_SIMO------------ GPIO2[10] -- 43
+ K+ w) m( a3 D$ p5 F) x" ~6 V // SPI1_CS2 ------------ GPIO1[0] -- 17+ W" A( s. _' c; Z! j# A
// SPI1_CS3 ------------ GPIO1[1] -- 18
0 P6 _ f5 m3 i& R% L2 C0 l# Z/ p, j/ {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; F& M# {+ T' J( Y; ^ k- O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; r, b6 k2 t6 T6 z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 w9 {+ ^+ C$ T0 g1 s1 Q
* {' w* H6 f( l4 ^
//DRDY
. P1 D( j; h2 x( Q4 | GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
+ h. P9 J. H! u7 Z // CS2,CS3( P0 [8 ^1 N) n1 Y6 d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
9 M* U( p8 u# q/ Y3 l/ g% ` U# c" O GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* |# h: l8 }: v3 T: a //SIMO$ f! r; w' h1 I: X
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO2 z6 C2 e1 |2 a8 R% j6 E7 F# w
//SOMI
& L0 }( L- o: B6 x0 e) ^5 f GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 }2 l; n |: v' H //CLK6 R9 g/ f( B7 u
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& _; O% z! D1 x& h0 L, w& W# N! p
8 { q, z6 R { // LDAC
8 @5 J7 g' [5 W) U5 L5 F. L GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK+ Z& L0 l9 w9 X8 d
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 R& _& m7 {( q$ \$ k1 {5 V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 h9 C% @3 |- @; G+ P; [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
- X& U% v& d1 g$ g GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY1 D6 L4 ^9 {% M- y# L
}) T8 p& M6 d; I' m" i0 V
9 I8 Z' t' N2 ]# Y$ i& Lint main(void)
" D1 _0 [; D9 T3 h6 _0 g# D _{
& g2 ~& @0 R) H- _, m0 r$ K // 外设使能
5 q( R' Q, M" R; k% y, r) L6 \ PSCInit();( J* ]1 n& F5 w; o. Y* R6 H
3 z1 S" [" }# I* }
`7 x! r: i; B& p: R5 l- l // 管脚复用配置* _. @0 }) l; ~+ \# E7 V9 F
GPIOBankPinMuxSet();0 b' ?' Q' |" P) _* T( ~3 R
for(;;)
% @4 S9 _0 Z7 K# f. q {. {1 j+ Q4 ?. E0 A+ S) ]
SET_SCLK();//时钟正常输出
2 t2 j3 v- ~) o. T& u4 x: Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 b w G) }4 Q) Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3" j0 w$ C: }) Q! J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
) @, u4 `* g; x8 L# j9 g
T$ j3 T% W& n delay(20);
, B, J5 L& R% }2 E( F CLR_SCLK();7 B" t6 ^2 p3 S7 `! D6 D
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 o- @' e" ]% l' A* D) K# C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ ?6 N( `3 F' p3 E& \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 o# T9 z. w# r* g, q, F: g
delay(20);
) U, N4 H3 n& Q4 W7 G* v }6 N k& p6 a/ g/ Z$ X
}
6 W" [" X/ z2 C2 O |
|