|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: Q% F* S4 l% kvoid PSCInit(void)) l3 f* k J* y$ T8 P# H
{; E$ Q$ W& ^) F" i' Q
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);8 o' u, h. K8 p0 h& |2 i/ d. |, Z$ v
}' Z) r$ |8 w# T& K6 L4 P! x* S7 Y
4 w( b! b3 Q- kvoid GPIOBankPinMuxSet(void)( s5 [; M3 @% P! V- T5 _2 N
{8 C5 a# @6 C$ u5 o5 w
// DRDY ------------ GPIO6[14] -- 1113 G9 I+ r! p( ?, @) K) C7 \6 F
// SPI1_CLK ------------ GPIO2[13] -- 46
1 I* m/ W4 L2 j; c/ L // SPI1_SOMI------------ GPIO2[11] -- 44
! e- v0 c8 ^0 i9 Z, y3 |: X // SPI1_SIMO------------ GPIO2[10] -- 43
5 B/ C# U& \" X // SPI1_CS2 ------------ GPIO1[0] -- 17$ @' f9 O- J- I. \# V
// SPI1_CS3 ------------ GPIO1[1] -- 18$ ]7 c1 V7 a! s2 U" t* M
, m% v' N }! e' } e6 ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 _8 w5 I2 b! C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! k& t' @& `) I! s/ S; i& } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);! p. I; l& p6 u! C" @8 q) u K
% O4 k0 o( M4 \) ]7 Q' [ F1 j
//DRDY
p. k" c& t% t GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY9 |6 x- S$ x( m
// CS2,CS3& H# n' A* u* s# I! \' J7 V
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2( \* h9 m' _% q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 u6 }) [0 t7 E5 N' F
//SIMO
) i9 p. L5 Q- M! X" l4 V- Z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
o- J a- V9 R! Y5 X! x //SOMI1 x, a5 t" ~2 B
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* B: c* S e5 w //CLK# w* t5 G" f; ^9 s) T
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% z7 I; _9 y, |* E/ M4 L8 Z
T# ^1 w8 A% S1 e& i/ n- E // LDAC
I9 I. `6 H w% G+ H, } GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, W, H' ~* E- I& b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) n8 [! d& g0 R8 q# R. b( J# @ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. \* Z" f' {! K! R, t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* c) B1 \* G; {7 m" J
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! I: `% X% ?" Q1 m1 z( [& w}* J- ~; e ?$ P4 ?8 y
( ]& `. D5 V2 m0 Q* d8 M
int main(void)* C9 P$ e/ u, Q, t9 |
{
4 U n, U4 |2 p) g0 Y1 I // 外设使能
, j& @- V1 N8 w6 ^! m1 d PSCInit();
2 W( ^' F$ F0 z! Y: t1 k1 y2 E2 R) m5 m: `+ E+ m" I0 g
{$ J: _6 `; @% x6 s // 管脚复用配置7 @! z7 [ D7 h7 N$ |
GPIOBankPinMuxSet();
2 k- [# F1 \& _5 H% }& o for(;;)
" r8 [0 }+ ?+ A* j4 r1 h {
$ r3 ]. n! X" H r SET_SCLK();//时钟正常输出* D7 l+ O7 H7 ?' w& O$ m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 ?* y6 n& t( f- K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 R& ^. m5 T% o) e* h+ _0 c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
2 H, ?4 W Y$ C2 j# o7 n
6 w6 R! X+ e9 g- H3 v! }5 o1 P3 M9 n delay(20); S, ~0 k- i- s* r6 e) d7 L
CLR_SCLK();
2 y! W2 U; a, c. K# U; J0 ]8 T/ } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( J, @" G L8 R o8 Y* z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 w* I. Y) ^0 ~ B- `4 B/ j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) _8 m* z$ `/ X0 N, o delay(20);2 i# h1 r* C2 l' V+ g v) p) G
} {7 O, R+ i: D7 }. V2 m1 {- B
}
% e( F/ P2 L/ i+ T |
|