|
使用下面的例子代码,不能使SIMO和CS为低电平:0 X( {- Z: \1 y/ T# {% E
void PSCInit(void)# k( \0 ~ m: o$ ]& w) b. m) g
{
: e& d: g4 E& `/ r: p PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ F& v9 V: M+ e( p( Q}
( q- Z+ ^: ]3 s1 p! p! w0 ^ \# o( c6 O. j
void GPIOBankPinMuxSet(void)
0 q4 K: H8 [3 q{% z: W6 g. m9 E' e4 O+ e
// DRDY ------------ GPIO6[14] -- 1113 {. s' f9 y7 e' C" ~4 }
// SPI1_CLK ------------ GPIO2[13] -- 46
1 r5 n# \5 @3 U6 J( V // SPI1_SOMI------------ GPIO2[11] -- 44
1 D. X `! M) R# p! m3 h K3 c" b // SPI1_SIMO------------ GPIO2[10] -- 43; m6 M) v/ H) ` t+ g
// SPI1_CS2 ------------ GPIO1[0] -- 176 R B8 C" m M: O
// SPI1_CS3 ------------ GPIO1[1] -- 18" w, _' \7 j, z5 Q' p
& k; O7 V; B0 O4 ?7 Q* S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: g' I8 s9 I4 |. E' S) w: w4 K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' l0 B' H. c$ z+ }) n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- e0 ^& X) [9 u. C# F; V
. p7 u1 M- k0 L) E //DRDY
( \0 f0 [; ]4 w. x+ N& f GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ J4 m3 Q7 a) R- R# ~ w // CS2,CS3/ s/ d+ X9 D3 D0 z6 T( C
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS24 u' Z# v6 l9 X3 \2 E6 [: X2 E
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" K* @ L. m' S* P, z; M
//SIMO0 }8 ?( B3 _8 v% O J
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- _" R% H$ ]0 B) K$ g //SOMI
9 y5 u' b+ \6 X/ N5 j GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI: E& l0 z* \0 E/ n& O
//CLK
5 ~% P2 Y( m. K GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
( C; p$ p1 o. S. ^+ L, E; A: _( i# \/ u* P. z4 y/ J* }
// LDAC, q3 k7 L+ S4 |8 G. d* l1 s( `2 R, W1 c |
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
" J1 n k" E; f) H+ V# \" |: C/ V) G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' D9 q: F9 W# K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 S8 `! _9 v8 a4 [8 t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3$ T f! v( d9 i) _: V
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY- y, [9 k6 l; z8 ^) I
}. r A& H& V0 G6 g, e
9 K' n( n2 ~: M, K) m' F
int main(void)" U, B% }' ^& ?
{
0 F, O1 ~" L/ D$ l2 d // 外设使能# o; y1 V+ L I2 M ] \ U
PSCInit();
. R o4 C: l; J, M6 U! W9 l4 I$ D" Z+ a! e
. `" j! R7 {3 L3 }0 m* q // 管脚复用配置
2 s/ o8 f- l) X) e* T GPIOBankPinMuxSet();+ x) u$ t7 s9 k* \
for(;;): Q1 c9 x2 l2 {4 ~ P5 I
{
; C o8 a# |" q/ c7 ?9 _. |# P9 ? SET_SCLK();//时钟正常输出
9 g& v V5 d; s0 j7 n+ T+ N9 [& a1 J4 u& F* U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 A8 |& _: r$ ]3 E$ c l5 y' { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# i5 K* m% [: M- [/ b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# {7 T/ V$ q3 S0 C3 `2 \ t& w u% M/ c# u ~. M
delay(20);
/ G: y4 O" C2 _ CLR_SCLK();
) H! U5 v5 R7 O& B! @ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 e4 D& k# ~. H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ ^! ?$ @; `. X' N' r8 m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 B- {& J% O# `
delay(20);* t. |' A$ g6 `4 O" W, l
}# e6 M# @% Y: A: K7 B# Q$ G/ L% {
}
+ o z# m2 F! u |
|