|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 T( Y0 E# i' b4 R4 H n
void PSCInit(void)* q e( ]. |) c: ^# N# N8 b) T5 x
{% @( T3 `8 @6 s0 B4 M
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
H- _5 }. \5 K' `! Y- ^}
. P4 J$ q0 W, x, \! ?3 T: l1 E0 |$ [$ H$ z- v# \$ S/ X- T0 J" ~1 c+ \
void GPIOBankPinMuxSet(void)
4 v$ ]4 B8 i/ u8 Y( \ p{
5 h. \( o- b! o9 d" [* j2 C! O/ ]) N // DRDY ------------ GPIO6[14] -- 111
9 p6 c/ ~5 I# A9 W! J // SPI1_CLK ------------ GPIO2[13] -- 46& x- k5 |2 A( c) W+ i s- M' p- t
// SPI1_SOMI------------ GPIO2[11] -- 44
W( e( ~! U, P! b // SPI1_SIMO------------ GPIO2[10] -- 43
' o9 B" ]8 I$ T- t! | // SPI1_CS2 ------------ GPIO1[0] -- 17# C7 y! V3 [# H4 q4 g8 ]: {
// SPI1_CS3 ------------ GPIO1[1] -- 18
0 P- S- C# h% R+ b" `+ N- `) c2 q8 f/ K4 |% X$ r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
- R Z) b' @, k8 s) M3 a. w* K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* R2 P9 ]# q5 V% ]+ a- J0 W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 W9 _' P0 y9 I& ]- t$ z) G0 K
% X9 \: C2 P6 b //DRDY
a$ H4 m6 A P1 l9 Z8 ]6 i+ i$ @ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ _$ h) m I$ W) ^2 `3 k) f6 x // CS2,CS3
8 H$ m6 b" U5 ?0 I" w3 S8 u7 k+ }' s GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 ~* v+ F& i" F$ N GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 O% h, l& ^1 F7 O5 N- d7 h
//SIMO
, }. e5 A' Z; D! O. [" ?8 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 ^2 c+ V0 b( g
//SOMI( N" Z4 M# ~' r) _9 S7 B
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
$ S; ]5 A6 ?# D //CLK
) |1 ^5 r* u! {- E9 | GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) \. w. T' j# H8 ?
, S n( J! f5 K+ _* e& Z5 d# K# b // LDAC
0 f2 e( ]# y5 ~5 D4 a5 l4 U7 A7 S GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* B+ [8 P) W: C: ?1 h# y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; Z0 ?* Y- E+ ?7 T! Q I
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. {& F9 J% l0 I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; O: c9 V2 g4 P2 G/ M
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( e% u3 s" M" X" A/ A
}
, U, Y! a; Z: C8 q8 G0 }9 x; X4 p8 H- V U* F/ M' s7 I: v
int main(void)
' b' e( u4 f" \5 n/ V5 D{
d( ` Q2 w) r. S3 C" _ // 外设使能8 X9 q" J1 J0 ]- M/ }
PSCInit();. b7 V8 n- k- N' e0 @
/ b" l: \2 b, q; N
8 G5 Z C1 J6 ~% ]$ k9 @ // 管脚复用配置, |9 h( H* q9 R! f) B
GPIOBankPinMuxSet();
4 `1 D, S" f( h! o1 x for(;;); ^0 t! T! U6 ~0 \
{
( i$ }9 Z( t% W SET_SCLK();//时钟正常输出4 S& m+ M& N+ ^4 x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 }4 Y, E0 S5 p( q7 o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ Q4 W) P: s' r& T; r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 p* m9 s% R6 O" w# U L6 r3 l7 u5 V
delay(20);, D+ q, P- Y! P) u1 q, ?
CLR_SCLK();
1 Z! g6 N. \8 M) K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 ?9 ?% F) O( l1 t& K& u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- }* \$ N4 ?" E+ A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ V0 n# m* O5 J; E# _/ L5 e8 W
delay(20);
$ O7 ~$ e6 R0 t* M5 W+ d3 W% v }
5 e* l1 R+ s; h! ^ [$ U: c0 J- P}
) L% i6 e2 r8 C, s: P, Z |
|