|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
% y4 K+ f) N. G9 W6 v6 J& Evoid PSCInit(void)
( ?& \5 y% @8 w" e1 `6 E" T{$ h( N2 E: k$ Q a- m _
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ D r% K% H: L
}4 E* m/ L5 q X' k
3 E& Q% {0 i7 b( [void GPIOBankPinMuxSet(void)
% T% {. ?6 q G$ O. |{
- _! p8 s {: K+ s. B- S // DRDY ------------ GPIO6[14] -- 1110 \* Y p/ i0 ?% Z9 x$ E8 {
// SPI1_CLK ------------ GPIO2[13] -- 46- y6 N$ O2 `8 V4 k
// SPI1_SOMI------------ GPIO2[11] -- 441 z0 |" ?8 x- G
// SPI1_SIMO------------ GPIO2[10] -- 43: P$ B0 r8 S5 S' z' \9 ?
// SPI1_CS2 ------------ GPIO1[0] -- 17$ H5 O, t! i/ I0 X# T7 O
// SPI1_CS3 ------------ GPIO1[1] -- 18
% w$ }5 {; `# Z) R( B& N; X' k
% Z# L+ W8 p2 b, E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
+ U( u! p+ m5 w* \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; V! C t+ ]% B* \, O+ t) N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);: r; l% v, n7 }! q: G, L
3 p/ q1 V; R; i( ~% G) | //DRDY
5 K" j% B! s7 n, z9 A GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
# H3 ^7 H* K; M/ i // CS2,CS3
6 ]+ d, L) U. p& n. `$ \" G! f5 y) G GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS25 ~& |, E7 A$ i. O* Y
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ }& X8 n1 K' P. i- x% |, X //SIMO
* i$ V- K W+ x$ h% B, l9 z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
7 T- C1 v% \$ i/ [" z( d# p% V p' e //SOMI; g D! {! U! \* [' @9 v$ Q- P( {
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# O8 ~) T4 U# m& k: C8 x' m0 m //CLK8 r! T, z3 z6 P) \. |
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK* k6 [7 t8 n- |- c, o3 B% S
F8 m3 d, u) }: N // LDAC$ g, A( T, A! l! F
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK z( q4 O: v. G& ~$ e* z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) w$ `+ B1 x( a! V) y1 _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; `5 |# p' }* ?5 |# R9 p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ R1 s5 {# N ?0 q; Q3 a$ V GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* W% `4 X$ ^8 B* T+ {9 \1 s$ |
}
+ g/ q p3 ~5 p8 h$ f# O; h& }5 K. {6 c: c4 R
int main(void)6 ]! E# C; X, H$ {) ?) @/ }
{
# C1 O$ s5 h6 q3 b3 S4 ~* a // 外设使能# g2 w8 D6 E6 \: S1 ~3 x
PSCInit();+ M, S- \! g6 B
1 f% {* G2 Y( J; p# T
, y( n8 Y2 _7 f7 Q+ @
// 管脚复用配置
, y) c0 m9 C7 x) B0 u6 ~$ D1 Q GPIOBankPinMuxSet();& G6 j' S! i+ I4 R3 U4 f* c
for(;;)& Z# {* b4 h4 L# T( s
{
6 M+ ^/ {( A$ l9 S: V/ `9 b SET_SCLK();//时钟正常输出' P7 S3 F" P) p$ N0 \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 }8 W& W( Z0 w) y" v0 O- ~- E) M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 y6 z# r5 c+ W5 w( b) B8 L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& n8 X! Z' C t/ u' L
) C$ Y+ W. ]# E+ [4 c4 U delay(20);
6 T. g: I, x/ ~0 w7 H5 i3 p$ D CLR_SCLK();& @+ P+ E& G% n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 ?6 D4 \- w( O" | GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 Q% i1 Y6 R* p8 V4 z$ I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ {1 k1 s: [2 ^0 d7 n; S delay(20);" @( Q$ K" C$ g& N8 R! j3 t2 e
}0 A; P7 A E" O5 F+ l
}
9 X0 K E5 o- ^0 V) w9 o m |
|