|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 {5 _) R9 ]% H4 u/ W: Bvoid PSCInit(void)
% _4 K3 |6 Y$ U{
6 j" B1 o3 P3 U3 y4 N PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% J0 P7 F/ D6 D( Q: ^
}+ p {/ f* E, L% O) {' d
/ I' I8 q* k. [/ P/ wvoid GPIOBankPinMuxSet(void)$ ~- [2 I) }* D& t" v1 f
{
- V( N! O$ i3 j1 r. j' T // DRDY ------------ GPIO6[14] -- 111
$ g/ z* c" D6 i9 U9 B // SPI1_CLK ------------ GPIO2[13] -- 46
7 K/ p( r% s4 s( ]6 u // SPI1_SOMI------------ GPIO2[11] -- 44: K+ d4 I! c3 u8 [
// SPI1_SIMO------------ GPIO2[10] -- 43
" {' n( D7 ~, x$ T // SPI1_CS2 ------------ GPIO1[0] -- 17& E8 i' ~6 i& A# A0 V, k
// SPI1_CS3 ------------ GPIO1[1] -- 18; r; V- y3 ?& d! X% i. n4 H
" }! H# d0 A+ [ M
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( ^& I, T2 K9 o- g6 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
3 M" Z* m0 h: a7 U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, l! z, Y3 f+ X( j0 s" Y
8 j: x }& c+ i/ F9 H, j6 n* }9 | //DRDY( V ], Y% n6 Q+ {5 F( O
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& i$ j& d7 k! V: g+ N# l4 X // CS2,CS3
1 J4 [) ]" [( | GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2% G: K1 l }; g3 e/ G5 b+ S! f
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* z6 z- z b. m* L' W( S
//SIMO* M7 y E3 F7 B
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& ~+ }2 x2 |- d! Y- i$ E* O4 y
//SOMI, T& b2 L) `; P, t8 X8 X4 D. |
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 m7 V B8 P+ m' y% y/ B
//CLK
5 n! B( @1 D0 u& a3 F4 J GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. }' {8 A3 i% Z: _' m5 z. u3 ^0 W% L/ r0 m2 B) i' A; Q
// LDAC6 O$ l% m. {+ U
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# \5 K/ ~# c: ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# f# T# u3 N' b5 G8 a' N" z* W8 _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! Z$ z% g. G8 E/ I5 Y' A. w8 G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3# {" A! Y( m4 h% K2 p
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! W# E6 Z( Z: \}2 [7 J" W* r- P
0 y" i2 c2 G2 ^. mint main(void)( I' @: O3 Y1 Q" J! W0 I) }
{
7 F3 c2 A6 @" ] \ // 外设使能
. [) p3 N) M# h% V# X PSCInit();
P0 L% C/ v4 h" b- J# v( T# \0 y( Z+ W2 ]4 J, N$ N
) a& {$ y5 i7 P# W; @
// 管脚复用配置# C5 w" z0 G+ [! V% ^; q
GPIOBankPinMuxSet();
; B! G, K" [6 e/ Y3 a for(;;)
+ [, h/ g y8 [8 ~" L+ \. U+ \3 } {
" g0 n1 g7 T0 c! `5 ] SET_SCLK();//时钟正常输出8 ?' `. c: R2 N1 P( q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, n5 T! X- P* r& A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, M6 B# k/ o. f, x: K: _- \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN* ]: E8 b* b3 I$ d5 L2 E7 A
, Z& S2 w; }( k1 f2 j9 m delay(20);: ^0 Q" Y- o7 Z* L% ]0 T' I' W# \
CLR_SCLK();; O) K+ W; L- |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 M: w6 Q- ~5 u0 s9 Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ f( e+ H& K, H" o* U. p2 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 L3 e0 M' }; @* t; u
delay(20);
: R3 X0 n+ H) W* Y }5 }" D" w- O2 ?' x% J/ l
}
) h6 t9 E7 Y8 _$ p5 \. n. w |
|