|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 y' ^7 Z' ^) Y V( V) N. E
void PSCInit(void). w6 w: a- L( C+ Q
{
6 Y0 K2 u& B. o& N. o4 [ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# p5 ?( R* S+ c- E7 k
}+ ]* h4 o1 O5 O
( ~8 h+ j0 ^$ }+ ?. s0 H
void GPIOBankPinMuxSet(void)
/ [/ p ?) L, |# W! j/ q{3 A1 e# j* ?# i6 {# z, s2 d
// DRDY ------------ GPIO6[14] -- 1113 N0 E( {" C4 H, S# y) P# {0 g" U8 R
// SPI1_CLK ------------ GPIO2[13] -- 46$ S5 {4 G1 r- L8 Q3 a5 D, I
// SPI1_SOMI------------ GPIO2[11] -- 44
" c4 x: E: l+ [' P // SPI1_SIMO------------ GPIO2[10] -- 43
9 `7 a% ^. S$ R; }& t3 |# T! L // SPI1_CS2 ------------ GPIO1[0] -- 17
& X3 S$ V1 u: Y; m1 k$ i& B // SPI1_CS3 ------------ GPIO1[1] -- 18
' L! R. [* [- {/ S
L) t m/ @0 }8 e: P( s0 A5 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. p2 ~( L9 t& ?1 y, A; u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 n- C0 K5 b1 p- K
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( y# m5 c) l# k' J% N4 c! z8 ]; `0 S0 H1 J
//DRDY
- i& P2 }5 W9 Y5 t GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 p# A& m- Z& ~, d // CS2,CS3
" G, s' y( u8 e GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# ?0 u R4 P# r0 w) \ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3: v& i5 j- w: l) X
//SIMO
3 i1 K& p: e; Z3 ^! Q GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 \4 s9 d2 r$ J- [6 [4 ~4 u //SOMI
% g9 y+ p7 U; i/ z4 I GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI& N+ P8 v7 S9 V+ [/ t
//CLK
& L7 i: l# ?, L6 ?, G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK, Y4 C4 d2 ?7 _
/ x9 p. ^9 M/ L
// LDAC
: Q( {: ]$ ^# Y5 @# X& } S GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% H0 S8 W& U8 A7 L3 K0 K f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( r" a. O( o7 p s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ n- S7 i& R& J' }, [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ J9 ~ p) S9 T. o* o GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ X! u; h. a4 a5 p# z; E
}3 `; A: C, \0 s
. ^! H( s5 A. P3 Z* b. C
int main(void)
' U* j4 v/ a: S ~7 X" R" y{7 d$ ^4 r# r+ H F7 |
// 外设使能
2 T% ]' e2 K; \% ~% G PSCInit();, Y* Q, I( y7 h/ S- v
& _' O8 C7 N9 D, d7 q) e) l: c
: E `& K7 E8 f! a // 管脚复用配置3 O' Y- q' `. r7 W
GPIOBankPinMuxSet();
- v6 n1 V6 y# U: ^1 v4 X3 r$ `+ a for(;;)
3 e; H+ c' H* l' w4 \6 E { Z0 C W2 s) t7 e
SET_SCLK();//时钟正常输出9 p' Z( r0 z) q9 O8 u5 }' [6 u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 _9 ?- N: Z5 j2 E2 B. k {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS39 K$ Q$ q! ]4 D( G/ q/ s* t9 i) g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ y* q7 A$ q$ [
) X* M r* p8 v% D; q4 V
delay(20);
7 x' l5 Z" @# ?- I$ s- a CLR_SCLK();$ }7 C6 C* N$ ~3 l1 i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 {! t& O! R8 c. b1 ]: i; l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
% E$ Y: r; \7 J+ z& S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% }* o; ?4 ~1 d6 c delay(20);: A$ T$ Q+ u; R8 f4 T8 p1 X
}
$ }7 d! i# g/ r+ q}3 i% c! v+ t0 Q" o
|
|