|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 {# ^% J. r$ ?2 ]
void PSCInit(void)- \- M2 N8 m5 c# c
{( J7 l" N6 h- a) F7 Y' y8 y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# ^! K; p. R1 P! D; o}$ R7 _6 ~; w# j; f: P
& ^; p; U. y: r; @5 y+ P# G( L/ `void GPIOBankPinMuxSet(void)
) ^* N' ~& f {9 ]{
& j8 C' u% o7 M: N' W // DRDY ------------ GPIO6[14] -- 111
4 p- Y4 t6 @( J- |3 \6 y: N, r% G // SPI1_CLK ------------ GPIO2[13] -- 46" |* z o4 [! c2 g4 H' z0 v
// SPI1_SOMI------------ GPIO2[11] -- 44
+ e+ N" G T' [, y // SPI1_SIMO------------ GPIO2[10] -- 433 P6 O" U, Y8 f: Q2 Z) l$ r6 z
// SPI1_CS2 ------------ GPIO1[0] -- 17
& y- i5 c8 U1 e // SPI1_CS3 ------------ GPIO1[1] -- 181 ^$ w, j6 O5 m# F6 {* A( ~# R2 O
" W1 u& r6 R r; A3 A6 T! f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);% ], b) z( l' s+ z k; v0 h, `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! q2 {+ |8 z" L% q3 Z4 w ^( v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ O/ s) a2 e, A% r& m1 S
/ Y+ A7 P6 h0 P$ ^' N+ a8 K5 q //DRDY+ @& C7 }; b; V& V5 L5 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY c# U9 C6 o% [) Q
// CS2,CS3
& P( c" X$ n' C& ]4 \/ j: m w" V GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS28 W, x( e) G+ p6 g' V& ?4 X
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* G7 f3 W: X+ q; `
//SIMO5 z/ A& G, b5 C# E# S2 r
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
6 a$ p1 W- V% V% L* J //SOMI2 O7 u& W7 I4 D" i# ?
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* ~+ _0 t \" ?
//CLK! \# H0 p- _, L6 a
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ F" P7 h% G5 }3 x
3 }( v+ h9 b) X' T5 R // LDAC: H5 j6 J0 e) H0 p/ Z2 j( @- S
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 T% K/ k6 ]& L9 ]) U- H- J" {, K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 r& @, ?; e- K: v5 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# j1 ~$ r7 H: v2 s$ I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
, y1 ^" x& I5 ]$ x! d" f- E/ E GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 k; d5 E$ M9 S0 ]5 a3 }}
/ U) i! D8 }) t" Z. c/ k3 [2 n) t% O& t) f& i3 D
int main(void)
" s" a% |0 A- k' u3 d{
, E/ G% [$ l$ l0 j // 外设使能! n+ Q- {- o7 H [' `) G% z$ H& c. h
PSCInit();
2 s8 D4 T6 O0 O1 P _0 p$ s2 f3 }( K: P/ q* D$ D
5 r: K7 P/ K! L1 X/ a6 @4 e1 B // 管脚复用配置
) l+ U9 V1 m& {$ F' C5 A6 P$ R GPIOBankPinMuxSet();7 o; n4 X+ F2 V! ], q9 j8 E
for(;;)' q! S1 T" d5 i6 Q6 ?
{$ i2 f$ d7 }3 V. `3 F
SET_SCLK();//时钟正常输出$ C- I2 ?8 N3 h5 U* Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, ~( ^; y/ m7 M; Z/ _$ a, Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 A" F& f! W5 w8 h, p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" M) X$ A4 D% R3 n6 i: Z
' I4 Y: b+ Z3 i delay(20);7 g( d: ]4 u2 B2 p( F
CLR_SCLK();
3 d$ V7 Y6 u* O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 Z6 ^# l @% K: y2 k( C3 I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 s* A1 B# t' V/ i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 l, o" f3 J& D5 N3 J! A delay(20);7 t6 e2 ~- c8 }; l: U
}. z7 \7 |( ]7 o) d
}8 i2 ]7 N6 c# e1 D m" i: l I
|
|