|
|
使用下面的例子代码,不能使SIMO和CS为低电平:0 C( T% u2 u$ e" X
void PSCInit(void)
2 p5 R( H+ h$ k" {{9 M$ C5 |/ q# ?6 u+ \! t. H
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 J0 S. n; Y9 s8 u# G2 v4 A0 l% S
}2 J& Q& v: j$ l0 F. S; x# S/ m
' J: X4 x. ^/ G" f: ovoid GPIOBankPinMuxSet(void)
' y$ |$ j5 A. v# G2 z{
I/ r, I% [* T' t/ v" ^ // DRDY ------------ GPIO6[14] -- 111. b1 Q! ]8 ?6 M. R9 c" ~& [& }
// SPI1_CLK ------------ GPIO2[13] -- 468 n1 C, i, C6 }, \. ~/ L3 }
// SPI1_SOMI------------ GPIO2[11] -- 44 ]( v- k; s; _7 D8 d
// SPI1_SIMO------------ GPIO2[10] -- 43
) {4 O# G3 ^0 D) F+ ` y // SPI1_CS2 ------------ GPIO1[0] -- 179 a# O. o6 P2 a4 p2 g5 I8 L) C3 p4 }
// SPI1_CS3 ------------ GPIO1[1] -- 18 W% b: D. D: I& B S ?3 S1 L) `
; T* W, `4 }4 v5 \- s/ [! U# y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ f% x7 X$ r9 z9 ^
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& ~* F2 F$ q- X# d; G; k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( J+ i E' Q$ }
% ^- U' W$ O8 V; s. l/ D
//DRDY# |0 G4 `' j& w; e9 {" e: G2 {
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 T% o: |9 Z) e2 C) s
// CS2,CS32 q3 h4 F) G5 ~( c. f$ q( {
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
( M. I) Y6 R$ v) W$ c1 V/ L GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( p4 P7 y5 k6 k/ K0 M
//SIMO
, Z% y# g: t; C! E GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO/ K* J5 P% L, a+ A3 J' B# s9 @
//SOMI; }9 h- L' s) y G( l# A4 i# \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ U% T: F6 ^* i; q1 m //CLK4 v6 ?) T! p" ?/ E5 H; K' }
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
9 @ c' O$ s/ J8 E( A# s2 C/ `# Y
+ l! z% H% T; m4 A. I$ \- Z // LDAC7 B) q7 B1 L* P7 m \+ t& S9 n
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. s5 c. [# j$ N+ S4 A9 D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* t, A" X) Y5 D, C! t8 ]+ H9 x- z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 v( S; g& H1 G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' [% S g+ L; ~' U8 C0 s/ s GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY1 C* D5 o) A; b; y, g
}0 [! m" }/ \$ ?8 g
7 ^( i& I. y$ Aint main(void)
* V/ Z+ z, r5 R3 m r- C{9 I4 q& }' M q, A. `: P
// 外设使能
% |5 E' G; Y0 |; t PSCInit();
1 ?# ~) R6 |! z/ v2 D
( A x d0 Y2 ~1 i' Y , c8 ?! a7 i4 w$ n! v) {9 k3 G* z
// 管脚复用配置
8 Y9 T* V- _" B- Y GPIOBankPinMuxSet();
" L" O9 |! {* B8 p1 D" ?" g/ r, z for(;;)
6 N1 p Y4 e( T" j {; n- A/ p/ {7 h+ S; H
SET_SCLK();//时钟正常输出& z- M$ G% L8 @* D( }. B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. s: l) t6 J1 |! J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ J; u( ]' G; x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
$ t3 S# A1 _1 l3 Q+ n
* e0 A" H! G* ^ delay(20);
4 Y2 W- t; j$ N3 A CLR_SCLK();
* |6 d' `% C' t) I7 w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 f6 [% N0 p+ Z$ S3 R3 u' N, ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: `, Q* A( n. r! _) u/ ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 U' O1 ^5 ]( Q+ L( ]& z7 ~- s
delay(20);
5 o$ X. _( ?. b* T" y }
# }; F6 H6 ~7 p' u0 b% ]; a- o}4 |; t% {' n2 V" i
|
|