|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: f Y. C9 L2 Y2 ]% ?void PSCInit(void)
1 \4 S" \1 W1 [: Y; d8 k4 l{7 ~) R6 s7 ~9 V3 p6 ^
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);5 O% m$ e+ ], W" O
}* P8 K: l" c) ?( ^/ u+ m+ v* a' u9 ?
a1 W' ~1 I3 W$ Svoid GPIOBankPinMuxSet(void)
( ~9 \6 H# |; f* ^ z! S. I. _$ {{: a; X# s. b4 s! F
// DRDY ------------ GPIO6[14] -- 1112 P D- r Y4 j( o7 P* @
// SPI1_CLK ------------ GPIO2[13] -- 46! ~: [+ e& |$ ]: G; Q- Q
// SPI1_SOMI------------ GPIO2[11] -- 44
' v$ U _: n. N. Y) N* w0 J+ S8 U // SPI1_SIMO------------ GPIO2[10] -- 43) N8 g) _$ p' L2 J6 R
// SPI1_CS2 ------------ GPIO1[0] -- 177 s1 c! m% h: `; J1 o7 Y
// SPI1_CS3 ------------ GPIO1[1] -- 18
- N: K0 i8 M" j5 d6 _& y0 |% q# N W9 k. L5 ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 c }, H0 v( b) j1 |; T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 m- n) P& D1 r$ F' I- G3 e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);8 U/ I O" @2 ]7 j. a) i! e& D
# i/ i `4 P5 m( f& g! [ //DRDY7 F, k' c, h. `" z. u: O
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 f1 A8 k' j3 C* _" R% `4 U // CS2,CS3) ?& y) u. {) ]/ j, m/ { p
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! Y, l- H* z2 T. N {* {
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 ^9 B! E; q. i9 }. \3 j; L //SIMO/ |- r- P1 |9 }! N5 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
1 M$ _4 p. o. @# G! ?5 Q% H //SOMI' ~$ M- }% d. ]" X1 I$ m4 n4 l, \- t3 X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI6 y2 P* e) Q, p2 F
//CLK/ l0 z& U6 n& v* m
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% k- ~" L% p7 a! Q
* @) e" i0 q- w# m
// LDAC( d$ ?6 I9 l' B" L/ q& W
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 Z1 S% Q# S; X# o: E4 S
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' h& t8 a0 c2 M' e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# U/ `+ \2 F9 }$ @; w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 T& c: c9 I) C! v. A
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 }3 [/ w7 T! L! t4 O1 Z
}
2 h2 F9 P$ S6 r1 v8 X u, u
$ k. M" w. I; l4 i* M& iint main(void)( P/ w: y8 b: q' @5 W
{$ B" ?( m: t: d* K
// 外设使能
0 Q, d5 Z* T( F7 W, S# v PSCInit();4 [: J/ l- O& q7 A! q& f
) t7 g% s7 Y: l, R9 |
* `/ e; j5 y* i& p. Z // 管脚复用配置
4 t! a9 p7 z0 ^7 _$ f7 N* _ GPIOBankPinMuxSet();
( N" J0 V/ n' L: e) V. V( z for(;;)# S$ P& h% M4 w Q# m. y
{. q B1 A8 y2 B" ^6 Y
SET_SCLK();//时钟正常输出; s; a8 r ?4 | E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
W# V( p7 c+ ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
- r' a, h+ }+ | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 D0 K2 o2 X& n, r( j
/ u$ }: R1 H3 X6 ~5 D8 R+ |' W delay(20);. i( `+ g9 X6 \- c
CLR_SCLK();
- I; X4 I' Y0 y2 c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 S# X1 e, L/ a5 L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3, Z% V( v9 ?- d; O1 T- |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 k* G- m+ O/ ? delay(20);
5 i6 z9 B6 u9 v1 u }, ~. h! N" O* Y y
}8 o6 P7 [. R T
|
|