|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! e$ ^0 r3 ^" y; i4 D3 I
void PSCInit(void)9 F, f+ e, P0 [ W( ?0 M
{
3 U# E- H% j6 ^( {8 S7 V" x0 Q. ^0 ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; D0 g0 J& ~6 J. P# H+ }! z& w}
' k' D, U4 [, `! i$ ^$ l* r' F( J2 W% e# q
void GPIOBankPinMuxSet(void)
. n! ~: J& X w* {$ J4 H' x{
' m# g) f4 ^# q. D8 b // DRDY ------------ GPIO6[14] -- 111
0 Y% `$ @3 Q# X3 @ // SPI1_CLK ------------ GPIO2[13] -- 46
7 T X/ J2 ^3 r1 q+ w // SPI1_SOMI------------ GPIO2[11] -- 44
) l$ S( Z7 [, v' B3 i9 W // SPI1_SIMO------------ GPIO2[10] -- 43
* o& I0 X9 X8 Q: Y9 V3 q& q2 x# \ // SPI1_CS2 ------------ GPIO1[0] -- 17
0 j# _! b" t, z5 @- d. b1 I // SPI1_CS3 ------------ GPIO1[1] -- 189 `7 A6 k3 ?9 Q# S& w4 K; S
: K: {. Y6 P2 K8 Q9 u, G6 T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% Z: p* u! K0 A" b4 U: F; u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
/ i/ k. J1 r3 r) S; v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# k2 e+ o5 K2 u. v5 W
* j8 s9 o7 S! @8 o/ e- u7 z: ? //DRDY9 P" K8 g0 _9 S. W6 s
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
% ?7 d/ R( s9 ?( m" y // CS2,CS3
+ o8 b( t- x" O/ U3 F6 E& b GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, N- |; l# @- | J, F
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, R' ~. Y3 Q' a! f( w/ {
//SIMO
& b2 x, h/ l7 L GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 I& p& s F- j& ` //SOMI
$ i% C/ x" y k+ K GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
% n' f2 a8 E( O) h# N9 {& F3 O //CLK
6 [) T0 [ I- |! _ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( M$ H* i+ q( V8 N( w* v, L
( X! u, y3 \" E // LDAC
/ O) P8 }, w n/ p: U" j8 c5 Q6 T+ C GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
: r1 ~& o8 y0 k i+ V" q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ ]7 ~# n- Z7 P7 N7 ]- j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ @. y! _/ a! b9 I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS35 L+ i5 |) P' g, ]/ U$ ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 d1 w3 ^& f3 q0 a6 k$ E7 K
}* F% f* n9 C0 i& @7 A2 A
% M' B$ h9 {6 S6 x
int main(void)6 d; b3 @+ e7 s1 A4 x/ B- o
{
0 n9 J; o* i' i // 外设使能
6 o2 n8 w9 z- L+ k8 d; h' G9 e PSCInit();1 O/ ] o4 |' W: d8 g8 j* q: O
. [( q5 h, {8 h
2 Y# k& B. X5 e# E( @% W- z" @ // 管脚复用配置
1 D# C( A8 I1 F7 R GPIOBankPinMuxSet();
/ y. X+ g) ]" C0 w2 P for(;;)- x1 L& ^6 O& a1 C
{, ?8 W* P- `* I
SET_SCLK();//时钟正常输出
: k( ~" I9 R! }% `) p% ] GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" l! Y$ v' C# U. U2 I5 Q& h GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 p0 B. f8 w. X( u9 U$ o, O7 U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; V3 |6 H* l- w3 b" O/ [: |
( D2 X/ t2 s& S0 l delay(20);$ r! Z8 p d6 g/ [2 O
CLR_SCLK();
8 T$ _( c; d+ L) e- b- c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* ~( r; x. {0 `+ H5 Q0 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ g. f4 e" B/ r; ]3 q' } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 _" \1 Z4 B+ Z+ r6 [* ]
delay(20);
1 n9 ]4 K$ O" _: K8 Q6 I5 S" H3 C$ H }
$ V1 V% x, F) h0 A; A) {}0 p6 i2 h: V5 f7 |$ s
|
|