|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; A2 b: t3 T* ?2 W5 g. _
void PSCInit(void)
( I: B, N3 H# X G{0 ]* n: r: @9 D- x: M; v. X% @$ @
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 Q. a' n2 x# x$ N8 D" Z
}
3 j1 D; M8 @2 T$ u d, f) q" g- U
void GPIOBankPinMuxSet(void)
" @# W; L" J1 Z0 R9 a{
$ V/ ?" w6 H( Q* z# K // DRDY ------------ GPIO6[14] -- 111
! a- G; A; Y1 A# X/ D6 P7 O L" r // SPI1_CLK ------------ GPIO2[13] -- 46
! C7 |6 ]% H8 C' I' L% C8 L // SPI1_SOMI------------ GPIO2[11] -- 440 z9 ~" E* O8 {0 K9 R3 c
// SPI1_SIMO------------ GPIO2[10] -- 430 X* Y/ i- T j G
// SPI1_CS2 ------------ GPIO1[0] -- 17: g% w9 `/ y8 d. Q7 R; _" K
// SPI1_CS3 ------------ GPIO1[1] -- 18- U, h- h9 `& Z! D: J6 P5 Q: o+ T
# `- x h- n4 J& d- r& x0 d$ J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
" ~: M: Z1 L2 b, } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ u1 N: ~6 h5 z5 U) ?- F' L9 n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- d( S3 v; u+ q" f
) }- q( L' G# I1 _
//DRDY
; F% [6 i; v0 w. {+ S6 J# _ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* u1 A4 R7 S2 Z$ g // CS2,CS3
+ V5 h8 j' `' S {+ U. C GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
, R6 Z* b( j l- p) o GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' L7 U/ P" k$ M* o" U //SIMO' J2 V9 @7 ?0 N. W
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO2 ?$ [/ l0 V% y0 _! G
//SOMI
: ?; U Y8 @7 t- V2 X$ v9 D GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* a# Y5 r2 v: w* [) E //CLK; [- q( p+ u2 y) \1 A
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 g; k3 r7 k+ }; ]7 G
6 x& G9 P0 Z! g
// LDAC0 ~: ~9 P2 |& l$ ]2 l( |# ^
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 e* |1 M, Q% n/ |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 e7 L' S/ [- m A- A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 I p `6 N- v% J; x" o. ~- f& }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( S* R, K' b6 H' S* k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY8 {2 @, u, |# N
}7 v( Z' q; m2 O- g
J+ }3 Y" z5 u, R h
int main(void)9 H$ u% e$ A7 n# E, x
{
& U: p( i! ?; |) }4 j$ G // 外设使能' T1 Q$ \4 _8 |/ `0 i
PSCInit();2 n; _' ]9 v- z2 w# f6 f
* y8 Q, O4 }( H/ I : E; F/ Q3 b2 j m
// 管脚复用配置
- M8 O* F% H* B8 D( ^7 V' x7 i1 ] GPIOBankPinMuxSet();
. q8 g* }( U# r4 U for(;;)$ l5 H8 a0 s3 D, j4 Y% ^) K
{% U. ^4 ]4 V* z
SET_SCLK();//时钟正常输出/ g0 h! {* u6 g3 h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ P1 q- Q! U5 W0 y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% }5 q6 J8 K# G7 g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 Z( z' \% `# k8 Y+ t3 C6 S
/ B! \# y/ i3 X1 t4 D! @
delay(20);
. _5 m3 ?6 w, g CLR_SCLK();: J3 H/ ~8 h- D( o2 S7 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
" y1 I' o5 Q# G9 F% V' Y, K6 Z% z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ l2 H E/ o: F' I( o% j% _( y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 n" D; M& f" D6 s' C
delay(20);* y- t# c; S# N# O& Q( [- B3 F
}
( ~4 l5 O4 t; G' U$ x}$ h" p/ J- d- ?/ ?
|
|