|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ i+ [* ?, Y- z9 E4 `
void PSCInit(void)1 d( _$ M; \: S' i# }
{# p- R0 q0 |2 T" @( u& {
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 [/ k j" r4 h3 w0 w" o
}
2 z) g% @. ^2 `
5 D5 Z" [- Z' [/ e& ^6 bvoid GPIOBankPinMuxSet(void)6 R5 X. ^/ K& {8 v" C6 U& G4 j" }
{
6 d8 x V" h0 ]! [: E3 N // DRDY ------------ GPIO6[14] -- 1110 ~' e, Z2 M! Z9 u) V0 t4 V
// SPI1_CLK ------------ GPIO2[13] -- 46! F( _' `' J, J7 w* i O
// SPI1_SOMI------------ GPIO2[11] -- 44! g8 q/ \6 y0 N3 ~9 {# i" p5 R
// SPI1_SIMO------------ GPIO2[10] -- 43
1 I# H8 S: {3 Z8 b* O/ x* P; |! a // SPI1_CS2 ------------ GPIO1[0] -- 17( i: s9 d) V e8 v0 ~( k
// SPI1_CS3 ------------ GPIO1[1] -- 18
m N }+ y9 C/ j
% Z; M( q0 g& D% i- ], Z# g! @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 U. l+ V O, b0 N1 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- a. \ y+ I# {; u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& X) ~# m7 Z& Z4 v! v( Y% w
: u* z! s# T: k/ M9 E. y; m //DRDY8 i- y! H+ K; C6 ?1 Y G: s
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY- E5 y5 G8 T+ O
// CS2,CS3: H, b; j3 }" e# d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 A' |6 N P7 o- D
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 o( n( t6 I) ^8 M //SIMO: X: A4 J2 \2 n* ^$ h/ @- z" n
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
9 C; p& `! l, }/ W* K3 x7 k: H //SOMI
1 Z/ y1 d; `8 K; @& l' { GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 i& d1 ?: _9 i' l' s //CLK
7 B! @9 H0 M: l# n* K# Y GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' f- a6 `7 r+ g# ^0 A- A9 G+ k5 V
// LDAC: A1 O9 l, F" B( B" G N0 `
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
; x: u$ |" Z. u1 P$ s" x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! `8 ~. I2 h& n5 H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% n1 a* ^# A( A3 J( P/ Z$ |
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
E j" l2 q& S8 n- x% R9 q5 N1 r8 P1 C GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( H7 `3 B: o8 r; o7 U# h}
( ?% g' G5 `1 U$ O" `: a" I
S* j1 I/ n. ]1 T" _7 X! E( iint main(void)
N7 a$ n$ V2 E: P& x; B: q{+ x1 ~/ g/ {+ `
// 外设使能3 ?: W( D6 {1 M- T% H: g9 Y- i# u
PSCInit();% U3 s# _2 ]' ]0 T: M4 f
& y, [" o: q$ c, K
' b# k% W6 p' r8 ^% S // 管脚复用配置
5 V9 t2 H' w; P8 u0 P8 A( H5 l GPIOBankPinMuxSet();% N/ W2 n/ U1 M1 _8 H6 T U
for(;;)3 {" o, j; u0 ]5 V; B
{
* O9 _0 `) G' f: P* ~8 a' U7 |, J; J SET_SCLK();//时钟正常输出% k; }# P/ R% Z, Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) p1 y1 }8 G8 @# W/ }( v$ E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 W9 x) z6 f& {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 p1 M1 P5 [. C( I6 d* v3 k6 u; B
% ~3 Z1 d6 L# R$ W" b2 n& |. L
delay(20);
/ h `( q& N) }. K- G, L CLR_SCLK();
! |# {0 r; R# O; B4 s; e q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 G6 r) g8 D& g8 f0 d6 c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' `' I1 ^9 f z( x9 F% a# _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* x' D) A2 P) {' I delay(20);
* ~) y, N) e( I. h3 a0 p }
& \+ p( s; D6 Y: V6 E+ i}4 ?9 |( ?4 J4 b- a9 N
|
|