|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 z8 M1 U' ^- Q: s$ E7 Jvoid PSCInit(void)
; z& A0 p( k6 Z{
) d, e, ^0 M" z8 M4 g- ` PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ P) u" U+ L( C5 j}
) G- ^4 o3 m1 q5 i: X6 S. X
$ \* g7 x8 T' d; fvoid GPIOBankPinMuxSet(void)6 W5 y. B5 Q/ J# m1 I
{0 j+ G( o Q9 V& Z# X# R
// DRDY ------------ GPIO6[14] -- 111 X* r3 c2 |8 t3 u6 c7 I- B( U# g
// SPI1_CLK ------------ GPIO2[13] -- 46$ R5 F9 n' Q' {3 y( t& v
// SPI1_SOMI------------ GPIO2[11] -- 44% c& O0 z7 T* N6 v
// SPI1_SIMO------------ GPIO2[10] -- 43: B* {8 G4 q9 U" P6 V( C
// SPI1_CS2 ------------ GPIO1[0] -- 17( e' C9 u* N; L) \# p/ a
// SPI1_CS3 ------------ GPIO1[1] -- 18
9 f5 |( _- n# K& F1 C5 a6 y2 m$ {- h: g e# C- A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);# u5 [5 h7 ], p* M3 y# R+ q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);- O$ b4 ~7 S2 t9 W2 C& C P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);: t! e- J$ C7 c% {2 W
% N$ N" h1 G5 E+ |% [: D8 p
//DRDY1 J3 B+ h- f- G2 |/ U/ z. P
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% L& H0 e% |) Q; i; |
// CS2,CS3$ M& n1 U0 K$ Z1 ` Y
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
- I7 a9 Z$ M- W. { [ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3/ z l$ a0 T7 H y
//SIMO" V' f" V: c+ a% ?1 S$ f, p/ S0 V
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! G$ V9 s( `5 b* L) [2 p8 P //SOMI
1 T5 E. V0 h! y7 P" v+ O GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 X# {+ g$ M" w0 O. y. M# R; h //CLK
* q) J/ M" ]0 f8 _ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
( ^$ X/ i5 k _; t1 Z
7 X) H$ ^1 o* \, u+ ? // LDAC
( d2 V9 p# |- |6 M4 b GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) X8 V- d/ V9 p" y# [ X/ C5 f( I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 {, R) Y! X$ A3 I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- Z( ?8 q( t. b/ q2 W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ a0 u G" H' I( h
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ F% w0 n7 a6 P n, h6 ^}
# Q+ j$ d5 C' ^/ `9 O, q
/ s! s" W4 K0 k, y* s; {int main(void)4 ^& A' j* }5 a* P) O- M
{
& K$ m0 }# n/ _ P // 外设使能' ]: Y5 ?" w4 G/ U3 _8 a# E/ i
PSCInit();
' A2 j- V+ b6 K! q, c! |4 f! Q8 B0 _ y g- f9 k
& _0 \! Z; p. c
// 管脚复用配置% x" W/ s$ W3 N9 h# h: {
GPIOBankPinMuxSet();
5 r4 R8 {! x1 P, E5 ] for(;;)0 C" z- f4 @9 ^( ~" ~2 `/ C
{
8 m, I/ _; T+ j% [& ]* b4 ^! V) P SET_SCLK();//时钟正常输出4 h1 |- x! V& r- C1 _/ _$ ~. E' Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. z& c" ?* N# D! o( |& l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 s5 G: B* j- Y! J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
: y6 f2 U- D/ c) j M5 C' o1 Q- a# B; _" g5 _2 A. B
delay(20);0 E' J( j! i: z1 W* |& H
CLR_SCLK();
) i) w$ M5 F0 G6 m/ ~9 T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' Y* P3 B5 e _9 ]& K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
1 P. V- u) X4 t5 V2 D* o# S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# m( t' N9 R( C- e9 _
delay(20);
1 L6 R: q' J9 n+ r# V$ L: @% i8 i }
! k: L# b- a; o}5 ^# H H+ I1 l" [% ~( G
|
|