|
使用下面的例子代码,不能使SIMO和CS为低电平:0 F( g% [4 k" Y7 \- |
void PSCInit(void)7 Z% I& c4 `" e7 g
{
& z4 T3 p3 Q- Z- Y/ C9 [- o V, I PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ ?# s d* k; K} \+ F6 y7 t5 y; P) ]2 \
. F: d1 \( Y" u w3 g6 c$ z, e
void GPIOBankPinMuxSet(void), \/ i) i4 o* R; |+ w) Y6 p0 R. p0 U/ m* r
{$ l+ G6 K o0 T/ `' m0 r
// DRDY ------------ GPIO6[14] -- 1113 t0 O* E" d5 o: \% u* _2 w
// SPI1_CLK ------------ GPIO2[13] -- 46
3 e [/ C' v( P. K& _ // SPI1_SOMI------------ GPIO2[11] -- 44 a& V- K* Z6 m1 \1 t! ]
// SPI1_SIMO------------ GPIO2[10] -- 43( ~, b: N- ^, f+ h/ ^
// SPI1_CS2 ------------ GPIO1[0] -- 17
! A* P. `) }' f9 W // SPI1_CS3 ------------ GPIO1[1] -- 18* r& a9 E2 D4 s; f r* d/ R
5 r. z ]$ t; d6 {8 o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% V* [+ i& f. C, M HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ q7 G. ^$ H: d; A9 h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 ^& w; X- _3 {; F |9 U/ J9 ?7 P
* H( H/ ?: d3 P6 b% r3 I+ `2 T
//DRDY6 d+ r$ | w9 X" x1 _5 q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* P2 c3 P" u! e6 a" A+ S
// CS2,CS3
0 S6 M0 O$ {5 p4 `% Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 ]2 H' [) B) b1 B
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) E/ e" o2 `( f( A
//SIMO
" F. L2 s @. p) q' a GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
3 d4 }% @0 b" g" c2 s8 |( K7 w; c //SOMI, |8 O6 G' Y6 [3 o' }
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 D$ `3 A I, D) R) e5 O //CLK
- y% ^! D) j. [, q5 G$ W' R0 L, [ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 E1 r8 B7 Z/ F
$ p. O" ?; C3 v# X- `! ?% l. L( r // LDAC# `9 m7 q$ j; |* x* u; a' N
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
- M$ z6 T; M; g* a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) l+ M- j! t0 G3 \! g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ W- ?' O* [2 F; ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, k& s4 i+ T% E# K- V
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; I( ^( A0 [$ C% p9 e}. f% F) v8 T6 n! w4 O: q
# B" W3 S8 K$ h* V/ `4 F3 l0 K% i
int main(void)2 x. J6 {' g# k5 n; f+ Y
{; ?* _# R$ D7 C& v1 B
// 外设使能
: J' @+ e) J% B1 ^ PSCInit();
7 S# `! n! f, ]6 q7 A6 U( x' b, u2 q1 m* \
" V2 g; s( S$ O! j // 管脚复用配置
% i% `& U: q; y: q% i: i GPIOBankPinMuxSet();& n: D3 _$ B/ {) C
for(;;)
3 O5 g/ N" D6 x {7 y! c) ]! d, q; \ S
SET_SCLK();//时钟正常输出
! T% L4 {/ m7 p$ P p; |# e Q4 M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% e4 _/ v" X& u# G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; _+ Q0 K% H6 \$ m! ^! k2 @0 W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' i& N1 k& u! v8 X/ j) R# z/ X, Q& K2 D# f
delay(20);
/ g- I+ S2 w2 @ u CLR_SCLK();4 ]& E2 \( d% ]+ x; q9 P# O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; A- s; Z, H; s" l* F+ g0 k
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 C! W+ e9 X7 Q1 l( T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ d) n0 Y9 x) U) D- u
delay(20);/ l: y* i" E0 Y* E# _& B
}* _* m9 L# a2 P" A4 w1 |2 P
}
0 k+ K6 p. F9 ]* n, ` |
|