|
|
使用下面的例子代码,不能使SIMO和CS为低电平:) J3 s0 t$ Q1 T, M2 K8 \) \
void PSCInit(void)
7 n6 |9 B& Q7 F/ @{$ ^& v% f8 c2 Z$ R
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
9 j _# E* K) E% }( i}
! D9 m) ]) g6 G7 W9 D! S( r a
5 s! G6 _4 g4 k; v2 Zvoid GPIOBankPinMuxSet(void)
* [; B% _8 I5 W+ N/ T/ K+ n{
: G7 h( t5 h. V' N z }1 s // DRDY ------------ GPIO6[14] -- 111
$ B, g2 z7 K. S2 S6 U // SPI1_CLK ------------ GPIO2[13] -- 46. a, p$ f: g5 ~3 ^6 Q
// SPI1_SOMI------------ GPIO2[11] -- 44
. g* m3 Y: ^ s+ s( \8 r // SPI1_SIMO------------ GPIO2[10] -- 434 C6 t0 A! `8 r2 c& q
// SPI1_CS2 ------------ GPIO1[0] -- 17+ V' ]9 h- S* B6 X5 k. S! k5 T6 _- m
// SPI1_CS3 ------------ GPIO1[1] -- 18
# o: P) j# C/ D2 v6 Q8 l/ w+ t5 T: f2 J- L' x
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ c% w0 [& U( F7 l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( i0 k3 X: ^- G! g+ ]+ a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& W# l f6 {; ]# K- _
5 K5 E" h- Q6 w9 A0 A# q
//DRDY- w8 v4 u! N; N" d
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 Y' C* R: g8 K // CS2,CS3! k! t9 C% u, y& i4 K" K$ w
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: C+ y3 U% ? A3 ?) {, a
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 `% B! ~- H# ]1 c; O4 v; _
//SIMO
5 @, |3 C, s- I- v7 z+ F# k) z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- C( B6 S, f4 e; y
//SOMI( `% B- J% o4 F! C8 j' R" t* t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% [& f$ c0 D! m) y' R i
//CLK7 O$ B1 b" a: ^6 f {' t
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK* X1 D# s5 O e4 s% y. ?6 J3 r
" J- @* s- u" ~ // LDAC
0 f0 o! |" j% e m GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( c; W2 U8 D& q% z1 i7 \" n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' ]3 J4 `& M. r4 ]# _7 I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: N* L: U0 H0 p/ S: C) K% {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 `& `& @- Z# H GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ q# X+ e3 V% U% z; P- Y6 `
}3 T' Y# s3 y1 M2 M2 m w
* L3 S+ p9 c+ V8 C6 Nint main(void)# }7 m1 h7 i3 |7 ?
{
$ ]* t$ z- F; @$ C( @% j$ {& @2 m+ ` // 外设使能
, g5 k' X; F& V" w- Q. O7 I PSCInit();/ g* H+ |( s% Y5 Z2 C8 E* \
: P' p' E3 y, H' f
7 N% X. P! [; X$ l8 P // 管脚复用配置
3 [' m d, [ x. v# X& T GPIOBankPinMuxSet();. K* H. f1 X4 f6 B
for(;;)' S; l- z% p. E2 g
{* M+ j! t1 {6 l% z
SET_SCLK();//时钟正常输出7 ?/ _9 v7 f# A5 Q r; ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 \" o3 B. H; D4 Z+ u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
6 J. [1 @4 ]% R% A S' v$ s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 h3 @4 Q* }- s/ v; r
5 i2 Z; T z. |% x delay(20);
% T& r6 Q: M5 j CLR_SCLK();
+ ^' Y$ a9 {3 S! e! q6 [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS31 K1 n9 G4 n- M+ G p- f& `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3. O9 q- w2 G) c9 u X9 r' C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. B+ T4 b! l) s& m1 h; V
delay(20);! Q$ o9 S- m8 |! b6 q' p7 V/ w
}
9 v, E* s6 P) q& J' Q}, s" p+ m4 D: P
|
|