|
|
使用下面的例子代码,不能使SIMO和CS为低电平:. [7 F7 E' i5 C2 E7 v l
void PSCInit(void)
" d/ v$ t6 S/ T: D( l- k{
# e- B3 `+ z0 x4 y9 E. b PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 y S5 a+ O7 e6 q}
" x- g- p1 z) N' \2 A
' I- \0 m' C. zvoid GPIOBankPinMuxSet(void)- r6 b; R2 n8 I2 {; z
{
) G' r+ o; Z4 m" z' [1 t# M& _ // DRDY ------------ GPIO6[14] -- 111( L2 L, |# j+ S
// SPI1_CLK ------------ GPIO2[13] -- 469 T) u' r* k* H/ I- Y6 M8 B
// SPI1_SOMI------------ GPIO2[11] -- 440 s3 i* \$ c- R
// SPI1_SIMO------------ GPIO2[10] -- 43
@' j6 [$ ~5 `1 F9 ]* F& v // SPI1_CS2 ------------ GPIO1[0] -- 17
& q: {& F5 n* l // SPI1_CS3 ------------ GPIO1[1] -- 18
' q) X: b; ]4 f; J
F4 ~- |. E: Z7 I3 s& T' N3 n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 V1 b- ?7 a5 R6 u& ]' i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
, ~, t% m8 X! I% Y" {) G+ K, m G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
. C3 x( W3 p3 H* V* `* t0 m5 W+ z, W) t
//DRDY
( q U1 W8 y+ L; ]' t GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& Q! G: d) ~( {" P; r
// CS2,CS3# ]; }! _ K. C" ]- B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 I% a' z) D, Y7 ^3 g GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! b# w, C' G4 y1 l2 {- J i
//SIMO
# \* [/ m( e6 a" X6 p- `/ d GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: v- a, M+ ~* Z$ e/ G //SOMI
8 {8 \% J* i: S/ E+ u. a GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI) E* T8 X1 D; O W
//CLK
E5 k$ ]% X' o0 A GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, y" W6 ^' Q6 |$ f
( [( L( d3 Y7 F2 R // LDAC" z2 x) ^+ J) e2 y5 q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* o! |7 {* e# Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) k! o8 | f! d. W& E4 a% b5 e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; Y6 V8 Q$ x) o: L5 ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. q4 Y" D0 I9 H2 N GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 @, z; a% `8 g& c* K}2 H6 E& T1 T3 L, o0 \! [$ I
6 |2 k8 f8 A4 L7 Z# Dint main(void) a# O) p& Q! R9 }/ c
{
+ d! ~& L+ S9 \! ~ X4 \6 x) O- F // 外设使能- w3 _7 I6 f( ^- g
PSCInit();+ g) U9 w1 I2 r+ X0 u, [ V
8 V( V" f9 }1 W8 T
5 _ @& W. C; A% q1 A
// 管脚复用配置
# K7 u, G) A2 T& L" p' M/ ~9 J GPIOBankPinMuxSet();
! U0 N @ u" _3 t/ \4 Q/ d8 r for(;;)
+ Q0 W3 H3 ?1 Q5 l {
7 j& d( ], {% |! i' Y- B SET_SCLK();//时钟正常输出
. Q8 A$ |9 C$ a `+ ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 w% R( h4 l( N) U8 M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 R" b- N' n9 H0 H& X, G) ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 S3 o6 `& d/ A: A+ E
! ]' T6 d; U9 |6 J( ]+ V* [
delay(20);
$ f. J, A) r: M( N- V, k" P CLR_SCLK();
, T$ }& Y! J9 V/ O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
/ e- O9 U% G% X/ L. l) m& r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3; d7 m6 c) L6 g2 W! y: x) `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 @) M1 J$ S( R s2 l delay(20);( W2 `. O: d2 n5 A9 }1 ^
}4 {' ~; U0 [! J9 e/ C$ I
}3 l$ t# U, H, c9 r1 \' x% X* Q
|
|