|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 {6 V* b1 v5 Q- N4 V1 S
void PSCInit(void); g; |* |, O) H' @
{
4 f) v3 ^- r L PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);8 t4 }6 p1 E4 |5 ?
}0 E8 n! Q7 z) N
$ e; w) ^7 q9 K) V& ovoid GPIOBankPinMuxSet(void)
6 V4 c9 j$ e, `. g0 Y. z& j1 {4 z0 I7 D{+ k$ n1 d4 ^: N
// DRDY ------------ GPIO6[14] -- 111
' P" x9 W8 j8 | U+ B8 |# b+ M. M // SPI1_CLK ------------ GPIO2[13] -- 46
, m# |0 x" B1 z* G+ P // SPI1_SOMI------------ GPIO2[11] -- 44
% o: U2 Z4 F, _% P2 q5 C- m // SPI1_SIMO------------ GPIO2[10] -- 43
* t/ c5 }# r; Q. |/ w. }* l // SPI1_CS2 ------------ GPIO1[0] -- 17
6 |( |0 Q N( `8 t4 E // SPI1_CS3 ------------ GPIO1[1] -- 18# b* s- h6 O' v# A6 E
5 o) o8 W6 i, V r/ s6 n d) U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ f; M. L F6 i$ j, Q; u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);6 p6 o3 u1 a: T/ @/ o* M f) R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# C6 M) {9 e; S |- n! [
% Q6 T1 M2 X# X0 r5 L9 x) X7 e$ }
//DRDY
9 s. M& m' g7 G) n GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
# ]7 H, X) i2 b3 y, ^3 {& L! X // CS2,CS3
4 x- Y! U* k$ d8 g F GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 v8 L) w/ H' ?2 W; y& Q! e GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
+ C2 s' I# o1 J h# s3 A/ Q: V //SIMO
+ D/ @3 m6 O4 U: P, X/ |: l2 q: I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. S, {/ u5 Y1 B& D$ c- G! ^, Y5 [8 H/ ~
//SOMI( M. I& ?! R; m1 }9 S) T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI4 J `- y- t5 s& b( b: X" j& g
//CLK+ U+ A) M9 R! M6 m0 }8 @0 O
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: |8 b" V& [3 u- x" }/ Z$ v( B5 i* s
// LDAC
) p7 K+ C0 ?5 N GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 O2 u- h3 M' M3 Y f0 P) c: H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
F$ _8 T+ [+ L1 @3 \ d. m: x8 P: @& Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ k* Q3 ?! T0 `, V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* A" a }0 l( Y9 F2 q, g GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 o) i6 _0 v9 c/ |( L1 A6 w
}$ }/ J' @6 p3 v- r+ a; K9 a2 M
) Z# J: |1 g6 P$ I# u3 Q& Jint main(void)
' q* z# q: E* N7 n$ d{
& G1 C9 R0 l6 `9 j# o& l( l // 外设使能1 K* ^" E& O6 W2 Z
PSCInit();8 q" I& v/ f( _4 G$ }
6 S3 m# \+ Z& T) E2 @3 ^" C
$ B+ E) Z- U1 N9 ?/ l) B" S // 管脚复用配置( |8 `8 }& f3 q! o9 x `& b" R; k1 _
GPIOBankPinMuxSet();, v6 B \; b, e0 _( Y# e. U
for(;;)
9 {6 i& u8 c, F' p2 l+ J {
8 n5 p5 d8 k h) d SET_SCLK();//时钟正常输出
& M' q6 z& J, c( |+ ~& _- A& q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# ^, b* d5 v4 }/ \6 p9 B. `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 _+ F6 B8 R( _4 U# U5 [+ h GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- y, T5 a2 T7 ?% X% C
- c8 j2 N6 c. y6 ]0 l9 ` delay(20);
9 c# k8 z5 H1 W b! m9 [, u- i CLR_SCLK();' W6 \3 V" S' d6 j# G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" a! k* T$ p- b }" u* D2 O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! [# q6 e0 @( `1 h& Y$ ]+ L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 L8 }1 ~% Y5 ?6 w# C delay(20);8 ~! w, W& o4 i9 x
}
2 {; p% {8 h( G5 ?5 a}
/ L I0 h5 g' L/ i' l; m- h" H |
|