|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 A, }" b S3 b- S
void PSCInit(void)
- K2 E9 p3 w% X, f& g{7 S; _5 k; L3 H; v
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; k2 m6 v' O, Q}
! e' s+ q u6 r c3 \" w6 E+ l: x$ [8 B4 D/ K" E9 c6 V
void GPIOBankPinMuxSet(void)
" e: g$ d: g+ m* |/ w* t9 T1 L{
; Y# h$ L& E# S" P# ^ // DRDY ------------ GPIO6[14] -- 111
& u9 h( o4 v, h$ e, i( K // SPI1_CLK ------------ GPIO2[13] -- 46
: S. m' p ~: m // SPI1_SOMI------------ GPIO2[11] -- 44
1 n+ F/ n1 }/ p9 j4 y/ K, ` // SPI1_SIMO------------ GPIO2[10] -- 43
$ ?+ q) T$ H, q+ j# ^, [7 h# @ // SPI1_CS2 ------------ GPIO1[0] -- 17& w9 i; G% U# a; T
// SPI1_CS3 ------------ GPIO1[1] -- 18
6 o0 C5 ~( t& p& E, q/ _, D7 P9 r# t* f& T$ V x
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; u. @' Q% P( [& ?5 _" K- s1 f$ v4 g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- [2 }! c2 X' I8 @6 p/ | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);0 L! [% g6 |* t+ Z9 z2 z
3 F4 F+ O& h8 u$ \1 S# ]
//DRDY' C! Y8 l& H* J1 Z, z2 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) r4 j( z/ E7 M+ Y; g2 p$ U" o2 _ // CS2,CS3: _8 i" q/ P d$ `
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" Q- o" @2 E! Q% `7 {* A* d# }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" _! v& o4 s" A8 W- e
//SIMO/ \. l# @* ^+ e: H! W+ t# I" Q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 C' S1 ?0 f- p& W- u {1 Z
//SOMI
$ M; Q$ P# p# a* R3 Z8 G* X, w3 P! L GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI/ a0 ^# p( }- F
//CLK
! @! |# q9 q7 s. z1 m; r$ g GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
8 Z6 U+ k5 I) e) I; W& d- O% `& R' V1 p& A
// LDAC
# v0 O3 b/ g# @! w; g8 j& O GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ N1 F. w# I$ D6 \: i GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& l0 V4 b3 A2 L$ O# L+ c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: w4 X# O6 h4 S1 [2 i9 V3 B: V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( O% p- N, c9 z0 J$ R# h4 w$ d1 h GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' g- z$ O( d0 d7 L6 [; p. S2 z5 w}
0 q2 c8 C% d: X! x% m/ o) p+ [1 V; [9 I- m9 r8 H- u
int main(void)5 }4 @' u+ y1 V$ k8 i- e$ V
{& N* m4 y! [" E) m8 I# b
// 外设使能8 m! C! H4 |& J3 u2 n$ |$ M
PSCInit();
. e& `1 j/ J; I6 L% g, Q, Q+ [9 c M/ h: x
R' s7 E/ x! y9 z1 n8 d // 管脚复用配置
) x+ r5 c- x2 g$ e& G+ ^ GPIOBankPinMuxSet();
I* G, r8 P% l0 { `8 x- x for(;;)
# d$ {# _' o5 P# n {5 L$ f7 p. w5 ?' @2 p1 X |
SET_SCLK();//时钟正常输出( {9 h6 q, J" A5 ^) q1 c" g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ o3 `4 k# k6 S6 O F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
- M- U) u5 ]/ n" k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 `! G, @; k, [8 k0 B' h) E
" ~0 ?4 t" ], J. J delay(20);
1 D2 P3 z: N- h. Q# p CLR_SCLK();- X- S: p* Q# N8 U: U
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ l2 o7 Q5 ~/ h6 f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ B0 Q( N8 f* T0 B% ]+ m% N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% j/ P% T( K1 ]1 x
delay(20);
, d F7 N: |' H1 s0 _8 g }
7 I1 \) V! }/ n: Q}1 o: y' g3 @. V. f4 S. j
|
|