|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; i/ N2 b {7 ]8 |# g$ J- Evoid PSCInit(void)# n, T9 P7 ?) Q9 P# X1 M
{
* U) T5 p+ `/ Y+ z, e PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 W. P- B+ R, h8 Y: V5 M: [
}
" |& r2 E8 N! c2 z. A0 P: L; S: b7 C+ t6 N& \# j
void GPIOBankPinMuxSet(void)
[8 y, B1 G( a/ B5 p# O{+ B, D2 l4 }. x* a3 J. ^7 ` p+ Q# ~
// DRDY ------------ GPIO6[14] -- 111+ q% m5 A, T H, p5 `
// SPI1_CLK ------------ GPIO2[13] -- 46
6 A! I! v! M; ]$ S+ q- g // SPI1_SOMI------------ GPIO2[11] -- 44# ]+ o9 o7 e9 `" w7 Q
// SPI1_SIMO------------ GPIO2[10] -- 430 q( e( Z h T
// SPI1_CS2 ------------ GPIO1[0] -- 171 ?9 Z o, O7 w4 e) [# y
// SPI1_CS3 ------------ GPIO1[1] -- 18
7 h; g2 X' ]9 V: W
+ n6 i s6 N% ^9 ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; \: q" c* B2 y' y7 B; J2 x$ Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);, ]2 R1 j/ x$ v0 s% l9 c, ?/ T" W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);; B4 a4 {0 `1 A2 }& u
0 i" D1 ?- f" R9 E6 @: K3 r' P //DRDY: y! |! {9 r& T6 N. o
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 U9 Z+ F* f. C8 [1 H // CS2,CS3: k3 D, o- j( @ V9 k
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 U/ S Z" F( l1 G; Y/ ^/ }. m: o9 n
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* p' c. v4 x5 j/ j //SIMO
0 `' J! [3 C4 d2 {. ?# y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* @" i" i. ~$ h3 W
//SOMI. V$ p# b& h- P; X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 x* D. c5 U. n4 U4 ^8 C //CLK
) y7 m: O! |4 b4 h: i4 h GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
/ b+ A3 n' V# {1 H$ [
+ E# j: d# ]5 \6 g // LDAC
1 f; j' U- u7 ]3 | GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% o% W" K6 s4 F4 v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; H6 B# @, f$ u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# m! q+ c7 O9 F* K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; e$ v! h+ Q' t2 m- q" l
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 }1 }, N- ]8 C) {' a: b% V7 c}* S+ |* C8 u0 o
0 k7 I, Z& f' A) L& H% t2 w- B
int main(void)
9 `# I: s! M4 H0 b2 Q! [4 I1 J{9 K3 l4 O: q+ p1 m+ x
// 外设使能
& M& {0 c" T3 ^; l PSCInit();
2 x/ P5 e, _1 n6 |5 L! I9 C+ {9 ?( k! N0 |) `
# V0 P* s m, k9 `% o9 a+ {4 k // 管脚复用配置
, ^1 c/ }3 j/ h" C GPIOBankPinMuxSet();
0 D( ~' n4 b0 G/ D2 p for(;;)0 {$ U1 K# z; w. M1 b
{0 ?# v1 j$ G: A4 Q
SET_SCLK();//时钟正常输出% `3 `- ?5 `8 }( s7 W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 @( b3 k7 m- k9 ~6 E \6 X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 l- B: M- M4 c0 ~9 m. g+ e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN( J0 F9 b, z! J% \3 _/ X% A
6 X$ k8 O2 \9 N. u6 { delay(20);
3 ?9 ?1 i' P7 q4 H& j0 X: ~) V$ I! ~ CLR_SCLK();- t% }% z7 T0 V1 V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( ]4 q+ Z* R) H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3, ~( `5 O' C; `% j) `) r' o8 |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) {7 N( h# v+ ]: I9 P7 M5 n; | delay(20);
# k6 Z( L5 \. M1 C+ g. {' v }) x, O1 f$ e& { G
}
% N u* L2 }& v% p' R |
|