|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' O+ B; c+ V7 i, g+ r
void PSCInit(void)
! b3 d+ V# [" ^; ?* }{
6 _" L; E i+ j) n' @7 m PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. Z4 m, I$ d/ R/ x}( l2 {4 F" Y" U( {6 B
) j4 W" x0 Y& i9 }2 ]
void GPIOBankPinMuxSet(void)
: }! m/ p7 }. _7 f" u5 o2 K{( Q! K+ b p* y* G1 T3 R
// DRDY ------------ GPIO6[14] -- 1111 A( n8 D# ~6 L% I' k' t0 f# b5 i. I
// SPI1_CLK ------------ GPIO2[13] -- 46+ Z' o# B' Q2 B" `! V. h- R
// SPI1_SOMI------------ GPIO2[11] -- 44/ ^% j+ ~7 P" l* T% [
// SPI1_SIMO------------ GPIO2[10] -- 43. y+ [: l$ `5 a' a
// SPI1_CS2 ------------ GPIO1[0] -- 175 E0 Z L) a6 b; l. n' F% r
// SPI1_CS3 ------------ GPIO1[1] -- 18: x5 m S* e- M, Z3 Q8 u/ D
% A7 F* c. H5 H: e, ?/ a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% q& }( m% h7 w/ t; b- ~- x1 Y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: i' t; W5 u2 w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) r$ G) l& y( }# X0 ~+ x
9 W! g' ?' \3 `
//DRDY
' C0 k1 O# y$ P2 T* m GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) P- F5 K1 M9 @6 u9 [ // CS2,CS3
& G' z9 }3 ~8 M, Z6 i GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
; x5 c! _" m4 }" q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; z+ {) E/ C2 X
//SIMO1 J7 ^5 C; ]& i3 G. G
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 w1 }# b0 ]' X" W& c* d/ u
//SOMI6 ?4 G& D0 ]4 z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* a6 ?- }7 U8 }8 }6 H
//CLK
a- l2 R L; l+ B$ L GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" Q! `$ m0 Q$ N$ O
( X3 Q: n8 K# v6 t& f
// LDAC/ F; H# ~& u' t1 f9 [9 G7 a
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK7 I8 r: @3 X9 }! G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 _( h2 E4 g( w" [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 }+ N9 N2 G9 g; z' J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 {3 U, n4 t* Y3 ` GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ C! ?) D3 d+ B) q8 c}8 r! J! C/ |. b+ j4 w/ z( N+ o2 B
% d% l7 V ]( p/ h, @5 Gint main(void): b" N/ e6 x, i. X! O
{
0 z( R( y2 {, Z6 x // 外设使能
, ?8 [3 w" N, u) M9 E( ^ PSCInit();
! j9 g D6 j4 ~0 a" I6 B. d1 |# v0 H: k3 z& ?' U
, Q- k' i, J1 O5 U+ e9 V
// 管脚复用配置
! g+ ~' k: t# Y2 t! _# E6 m* `# l GPIOBankPinMuxSet();, f) c3 H8 i: X: d& U9 i
for(;;)8 u" u! r( i3 H7 H( x
{
3 l( w% y C8 K; m( U9 P* O; @ SET_SCLK();//时钟正常输出
* `5 G9 e7 l; C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& v7 m7 h9 M- v& x2 g/ j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3; E# \# @0 N- t3 g: G! _# I0 `1 {8 t! H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ j# {& f# c/ E6 p4 B2 `
+ c. }4 R8 x. {' B e/ L delay(20);
5 n% Z( _2 ?, s' H CLR_SCLK();
K3 Q6 D. L1 {( l2 D+ {% e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: w( S2 g, d7 q' E
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& h7 o8 m/ U0 y7 O! c- [# t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 e9 m% I; ]& F
delay(20);
# {6 H* D: v1 f6 a; j! i& f9 l; X }, r* z# y6 m! p2 T5 V" a8 n
}
, o' j! `8 F: R8 _- `" \1 l |
|