|
|
使用下面的例子代码,不能使SIMO和CS为低电平:1 A+ ]. m8 F( J( L; d
void PSCInit(void)5 i6 w9 i0 u: t3 c. p
{* W; z" L; n# d7 q! c1 _& \
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);! q- u' d `0 h4 l" Q
}/ F$ ?8 I0 J& M1 C& L, f
0 u3 j) F1 V0 c0 e; Vvoid GPIOBankPinMuxSet(void)
1 O9 s: R% j3 D9 G{
" Q1 j$ F: o0 y5 {. y" X // DRDY ------------ GPIO6[14] -- 1110 V8 K. T4 k% e7 C
// SPI1_CLK ------------ GPIO2[13] -- 46; v* Q- B6 |# ~8 o1 K$ o E9 H
// SPI1_SOMI------------ GPIO2[11] -- 44( J5 x5 T1 X+ Y$ z
// SPI1_SIMO------------ GPIO2[10] -- 43
( B3 {* P+ [% K // SPI1_CS2 ------------ GPIO1[0] -- 17" G5 h, m! O, f; S- k1 j
// SPI1_CS3 ------------ GPIO1[1] -- 18
, W) U& a6 W! |) l9 L
' }8 Z5 h! g$ y* Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 i* n) P d$ x$ }5 @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);3 v2 k1 ]$ v7 B; C$ _. F3 t7 z3 ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
9 x; N5 j) U$ `0 l" y# ^$ |, ~6 o* f1 C4 r, B" \
//DRDY B* `( d7 V$ _# b( I
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY: D1 A4 a: S7 y' Y
// CS2,CS3
5 c" m5 r& K. u! S w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 J0 K/ W' O: j
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 z7 q! N/ B. A6 r. {% t
//SIMO
# \) [# p6 w! r- A! n; g GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
N: x% ~# N/ n, g+ V' H //SOMI
4 c- C3 J! E! w& h GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ E- D, M! k; {1 U/ {$ ~: }+ `; \" v' i
//CLK
. J6 I7 l' z7 z5 S, W GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ F. u1 c( P( ]) R# ~1 O
9 b# A) n2 i1 _1 F2 @& `) r/ H
// LDAC, z0 d% b2 q4 o7 C7 {& J9 X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! Y4 P7 o* P: \! n* K7 L) i* r S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ l0 W% d, p% k% r% U0 m" b+ U3 F# Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; M& r% {4 g; s/ M. l2 d' ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" w( Y f: U) Q& t' n
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 J) x( Q- N1 o( R4 c( g
}% O( h3 s- g9 J1 B. l3 W+ W
/ d" K# ?5 i8 ~8 ?* n$ z+ O# M: Q
int main(void)
1 W* J/ h' q2 n# b! E4 ?{$ B) p# B0 A3 k# u
// 外设使能
3 l; r9 Q6 H! Z( h( w- R" q; ^8 H S3 ^. { PSCInit();% `" c$ D) P+ y
3 P" L2 L' L$ A$ W* I
. z# a6 @5 H, I$ C7 x5 t // 管脚复用配置
4 m0 e4 X2 i/ d GPIOBankPinMuxSet();. k. A( y8 z: a
for(;;)
( ]. Z* y; ^; L4 x; G, i8 x: K {
6 n/ v$ O/ N3 L7 l0 \ SET_SCLK();//时钟正常输出/ z; W7 Q9 Z+ X( \& N) T, _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 i$ O" @ _ y( D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* ?" B3 w: Q: _6 s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& U R& |$ I) a5 N# v1 n
9 \- ^: k& Q L) k$ p delay(20);
4 [% [" \: M7 C7 a$ [" e CLR_SCLK();. k/ _$ i* ~( |) O' X. p+ H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) L# g! Q6 S }) k( {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 j8 }7 _; ^! C3 s/ K' F% g% N$ Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 V; m. d8 e6 F9 U delay(20);
2 {* S5 @3 {3 w% B( H1 v+ ^ }+ ~, y/ v9 e9 Q( U8 k% w1 J
}' m4 b( D3 ~- I8 A$ I
|
|