|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; {! E8 L# X+ P6 c3 J+ L
void PSCInit(void)
- @2 K$ \) ]. W2 R4 @4 @9 w, p& `{$ i/ ?0 F& [. h! ]& ?
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 a' w9 ~1 x# R9 f8 S J. G
}
$ ]' D) E, k/ ]3 [, ^0 Z6 a7 t( F# _6 [' e& E2 ~
void GPIOBankPinMuxSet(void)3 j" P/ u8 Y8 y% J! i8 Z0 y/ v) L
{, W! { R, D! u P' n
// DRDY ------------ GPIO6[14] -- 111$ }, P$ M. o3 P8 d6 |
// SPI1_CLK ------------ GPIO2[13] -- 46
- h3 P9 I1 n& f2 H& E* \1 `2 D // SPI1_SOMI------------ GPIO2[11] -- 44
0 o6 }5 F4 g" [" L5 Z6 u9 u // SPI1_SIMO------------ GPIO2[10] -- 43
! R' X) S, x1 C0 S // SPI1_CS2 ------------ GPIO1[0] -- 17! N2 Z* v+ }/ V5 c
// SPI1_CS3 ------------ GPIO1[1] -- 18
' S! h8 `2 \8 J8 O+ J* C1 p% {' ?2 P1 @( A+ h4 x. l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% y7 c& B% R: D( v" y7 G4 k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* ~. O+ D2 _6 f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
^( |+ j* j, O, |$ G$ n: ]9 V, h7 ~+ J& U& d" v- s
//DRDY/ F6 s/ k, S4 r; E: {' W
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! l6 j4 g# S6 p5 J. j7 U
// CS2,CS3
) j }1 u' G& m) J& ^ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ h: f2 i- s" ]- R8 V/ O, M
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
8 z* W u: j) X: A: W( K //SIMO6 ~( y1 u6 I/ G) \
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO5 Z, v; j3 L9 ?: N" ?: @
//SOMI
3 M$ D* c0 l+ s% f( K GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI4 O5 J5 l T# s) c7 r2 b
//CLK8 a' ~* G! Q7 j; _( d
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( \1 J G( X0 s
; ~' L8 |: d& E2 |2 g; V // LDAC( q5 {3 \$ e" i, a
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) ~6 ]7 s; x- s% {1 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! [. x1 V, \ Q. W4 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ ]/ |# P5 x. m4 r! `6 }, L Y. n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 e2 X8 o% z2 q$ b1 h+ r; Z' ? GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 z* ]2 Z+ j, U- L B" E}+ d! Y8 x: t# l6 b
7 N1 z( l5 P) Z O( f
int main(void)) z8 o! I$ c+ ?0 ~3 K- G
{7 ~( {0 l; _5 O s
// 外设使能/ T. a7 \ [. d9 n4 H5 o$ Y
PSCInit();
) j3 M* B8 h0 F( [1 j9 E5 f; u5 s7 i6 r- ]
. d, I/ O! j& }, S // 管脚复用配置
$ f' L/ { O3 S# z4 x4 f. F GPIOBankPinMuxSet();5 H1 P1 a( T# Z/ ~2 K$ I
for(;;)
p7 q$ I) j5 a8 |1 B2 v {! R3 J2 R. I! [# U9 Y7 ]' ~/ b
SET_SCLK();//时钟正常输出1 k, T: w- @1 B( O2 `) z4 B( k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" X+ L% k4 U( P g4 x6 i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* P8 U2 U$ s$ f( w/ d, ^1 G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
: I1 e3 H3 F" v& X* y# E9 L3 `# }" O/ j! }# H% x! m5 ~9 [
delay(20);
. @! k$ a: y/ Y8 o, ? CLR_SCLK();
$ L! |. ?9 w/ b, [" b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 h8 e! m9 z5 @( k, v. w# N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3: f* r0 H, D) T" t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 ^- ^/ P3 j4 ]2 A7 p" h9 ^3 T) o
delay(20);
1 V U2 a M" [+ _$ W. X }. {) O# f# e3 b
}
( @- X: l e; u; ]7 y! d |
|