|
使用下面的例子代码,不能使SIMO和CS为低电平:: g/ | ?0 j& ~6 B& v0 U5 i+ n
void PSCInit(void)
# w7 _" v/ n' n: X; K{
. ~ d& ]4 T ~' v4 | PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 @2 N2 c7 o5 n
}
7 F8 i/ h# b. ]6 x; ~, G8 p4 T! I5 R2 C0 ^9 x% j
void GPIOBankPinMuxSet(void). o5 H; t. _1 q
{- _# u& k4 H/ F9 {& s* Y: Z
// DRDY ------------ GPIO6[14] -- 111
7 g! R& F; J5 S% E0 U& g8 R // SPI1_CLK ------------ GPIO2[13] -- 463 r3 H) E# K" N
// SPI1_SOMI------------ GPIO2[11] -- 44
; O: j2 ?% X7 K // SPI1_SIMO------------ GPIO2[10] -- 43" T3 p9 e3 V' w
// SPI1_CS2 ------------ GPIO1[0] -- 17# ^! N. a5 F' X5 A
// SPI1_CS3 ------------ GPIO1[1] -- 18
; Q+ M6 N2 F6 r1 {( m8 O9 H) v+ e+ a# X' C' E( H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) h" {- D' Q' i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ v* z. m) b: E5 M& u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
: _/ W O# Z1 }$ \# E5 Y7 f
% A! J# p* \! { //DRDY
8 z; R7 p8 D) z: H, }( e GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
8 w$ S8 r4 S* p4 U // CS2,CS31 N) w" `; _, H: H. Y! _
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" K) R9 B- \( J
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 Z3 u4 h& k3 M# { a$ |. Y
//SIMO4 K' |. V) W3 o: p
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( ]8 i$ D' u0 G& }, [$ e9 M
//SOMI
! h" u z* ^$ i' K: u5 } GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
. F- |' B2 t3 S" G, ?. X# V; [+ K //CLK
& f; {( @6 X4 t/ C" f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" c& _- _3 G6 z! r" [
+ ]" n* S( Y; a/ C' }9 c& d
// LDAC! h) Z9 b, {7 y& R: @- L0 |; G
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! O g) D+ m/ b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- b9 K4 k Y& i/ n' `" G+ A6 ]* R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 w8 ]# i4 H+ F1 B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. e' |& p. W: t
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* A2 Q0 x% N% I) o# y. o5 m
}+ b/ o, X D) T; r( j/ `
3 @1 h/ t4 i% {; e: R9 v, pint main(void)
& B7 r. I2 t7 F; }7 ~{. r) p" x x# G! k: Z
// 外设使能9 s- z/ ?+ }, T
PSCInit();) b8 ^* k9 P$ z3 z/ w
' `# Z' G; x1 v" O, t
2 O2 J* z! ^, T% s5 J' _+ P
// 管脚复用配置1 Y3 k( Y' G3 L% W2 ?
GPIOBankPinMuxSet();& V% F" g- G! M" W. m
for(;;)
0 T) c& @" S% u' U, U- A {
$ j' o7 e) W. ]3 q& { SET_SCLK();//时钟正常输出
$ n$ a$ D8 f) Q# [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# a7 Z) O9 a0 ?! u3 Y: H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3& a# g- i9 X- d0 ~$ r/ E1 t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 J3 |) E' @! z! i! X0 i( ~, P0 r- N3 o
delay(20);
' ?1 C) }% {+ P- j CLR_SCLK();
: e7 E' ?. g/ E; m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, Y& u2 l* ? j/ G+ z6 r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
# c9 \8 r$ A" h0 ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 X3 q2 U4 `4 l* K6 _4 B delay(20);. Y5 X" k" N( _7 ~
}4 `' j6 t8 u& P) X+ h" _
}
| b1 x, M$ B+ [* x+ ]% B1 w |
|