|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ p; b, E w4 t4 H% L/ t/ D5 ?void PSCInit(void)3 ]* c9 }; ^! z* L7 G+ z( p
{9 A: k! C c# m/ Z. h: ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- i& B! G: y% L9 l}
+ g% \( [" D8 P" {: W- ?9 |% g: f$ c& D! q8 l$ I$ ` h7 T
void GPIOBankPinMuxSet(void)( T% J8 A% l+ J, S+ p
{
( L" p# ~ F" y8 [ S! { // DRDY ------------ GPIO6[14] -- 111
& t r& R* ]5 V // SPI1_CLK ------------ GPIO2[13] -- 46
. }! k; Z" z$ G# o6 X* V // SPI1_SOMI------------ GPIO2[11] -- 44( o5 C+ I1 @. l8 J
// SPI1_SIMO------------ GPIO2[10] -- 43, f1 y7 y; }/ F7 Z* ?0 B* V
// SPI1_CS2 ------------ GPIO1[0] -- 17
9 L3 W5 W% A' T5 G- V1 ~7 `1 _& w; c // SPI1_CS3 ------------ GPIO1[1] -- 18
. f" _* I/ _( r: b* a- C( o
7 E' ~4 D% @, e$ h* c# g6 U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; Q) V+ Q* O& J9 _! t# [, K* y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);) l5 a0 } N/ |: N5 E. M
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) N: o. a. l( @. _( R, {
$ i8 k+ k& P- E# [/ x
//DRDY& M7 {3 Y1 T' K+ M1 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ [& o# W& r8 Z! Q0 r7 o" H1 {' x
// CS2,CS3
9 U( d. H) Z* p* V8 [+ } GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2. b' M0 G( U) m4 l: h$ @$ A- ~
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 m' J1 e; {. u+ r$ |
//SIMO/ Z7 L* V3 p# i# i9 ~/ D
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ @5 T/ C! \6 K. W0 ?6 h- F
//SOMI$ ^; R; S3 s6 T+ V: z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ I; X) v/ v1 k2 D" L9 W
//CLK/ v8 c4 F' V, g# D: ^
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK* j0 K' b/ { g$ ?
7 l0 c! A; P4 r0 C // LDAC
8 k0 l4 a" ~2 g$ C0 a- z/ C GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) E4 X5 A# [5 K0 e" @5 U& i GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: i5 Z, t9 A0 K: B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. z$ m/ t- J# M. K; `" _7 n9 y; | GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
) h' w# [/ g" B* F/ t GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 h) @8 A7 G& F% R}8 B; J( R& Y# W3 W6 d; d! }% _
# v( M! y Y/ E {- {7 e- a9 m/ qint main(void)
6 t4 K6 i+ }* x+ N1 L* T{
3 _. {% |, X$ C! }0 x // 外设使能* Y( o. ]0 n3 O' a! E5 H! T* k" ^
PSCInit();' }+ l8 ~1 H7 r" x7 G
/ u# Z ^+ [7 c1 g- S
" N- c. a; ]! S5 t/ Q // 管脚复用配置( G: s, b( Y4 Q- P$ s6 R
GPIOBankPinMuxSet();
; P' @4 k4 n' n( a7 {5 W- r: @ for(;;)( M+ Z( g3 ^0 q5 A
{- r) `+ V* S$ _; |
SET_SCLK();//时钟正常输出
: |4 b" W S7 {4 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 A$ T5 y' u- x1 |4 U. g3 w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- h2 r9 [! J& p. F5 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 N2 n+ x+ [+ Y7 Z( G; t S5 ?5 C! p1 u# s4 ]; K" K" t3 w6 ?
delay(20);
5 ]* i- ^1 [; _* \9 Z. L6 q; p CLR_SCLK();/ d) m1 m' J* E4 A( ~, Q* L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; Y- U, Z% ]; s' y& M1 R8 v" O; p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ H ]0 M# |7 O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 ~; m. h; R* W" ^! q, e delay(20);
; B: G- c, D9 Q. } }
; \; h& k# P+ W v( i+ G3 f}
; o1 H5 i, T' t# e4 u. u |
|