|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 j+ R0 w0 T0 `. p. L& t4 L8 x, |' `void PSCInit(void)7 f T: {% _/ M6 h
{
( l( N; U6 }0 x3 {4 @ [/ x, H PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) X8 J6 _% R% V$ s7 i7 H% Z% `4 ]}9 r4 ? g5 i ]
/ a: p" L2 L: H* h' O- Wvoid GPIOBankPinMuxSet(void)0 Z# a6 f+ N) d2 f- B& X% ?
{9 r( g* q9 N* x1 r
// DRDY ------------ GPIO6[14] -- 111
' I( w, Q. W _% V // SPI1_CLK ------------ GPIO2[13] -- 46) b' w6 Z! @4 l6 z# f
// SPI1_SOMI------------ GPIO2[11] -- 44
' X+ N% L- e/ E/ g5 t+ W( s // SPI1_SIMO------------ GPIO2[10] -- 43( G% _* I9 V+ I/ Y6 D& ^* ]0 R$ N5 M
// SPI1_CS2 ------------ GPIO1[0] -- 17
% w5 b V, G1 H% G // SPI1_CS3 ------------ GPIO1[1] -- 18
- K' _& ^' V4 F( }- p# x( u( y5 D
3 Z% ]- V& U7 z4 _- S; X4 H- W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 ]1 F F' t7 R; s" w3 m HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- R; l4 w) @! R, E" [2 \% ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 Y7 m2 H8 l. _7 n: E8 y) w$ T$ [1 T( ?
//DRDY
N# W% E6 G$ K- K' m7 `4 ] GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY, X) v6 r; [" i' R
// CS2,CS3
+ i) ~5 m( [. c3 W% e GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
}8 b3 B+ J) N GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 d+ d" ^% e: o6 ?, a
//SIMO4 z$ w: h1 `( H/ s4 O1 Y; ?
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ g. Y& \; d) v4 [" p //SOMI4 L* c3 Y/ A; O) z& T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* A1 S: R; g! G/ n' M+ \& y
//CLK/ ]9 ? T6 ]/ v/ K
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
9 [( a* r# M( l+ m9 @! `3 q7 q& W
// LDAC
2 m9 n2 ~* J( ~0 I GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 n; O( t/ }( L s9 U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) q$ Z3 d. C% D' Z- Y5 M6 p- G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ E* p9 r7 I9 D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' a0 R `. e/ Y; O; E1 y4 G8 t GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" q- t9 s# p s6 X}9 }, S, Z; ]2 X5 b
0 Q/ l& x; @8 ^
int main(void)2 ?: Q0 E/ E% o! y2 D2 N1 @8 [; |
{. ?9 x" f( d& c3 O' ?
// 外设使能, p) D% j" _1 J- t
PSCInit();
! ^' H: F& {- q8 x, i( E2 m! v- m' d9 p
) M* E T4 O) t! \, B2 J# j% k( ^
// 管脚复用配置
7 S! m8 {) o; c; O) c GPIOBankPinMuxSet();
9 `( S% q. j5 R# d. [) z for(;;)
/ m0 ^, \. a; Y. N% O& K* E) A {4 k- K0 N, [( `1 W) M7 f- W6 z
SET_SCLK();//时钟正常输出
1 T2 P2 J- X* {0 H$ p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# A# x7 R0 t4 V7 y, Z# S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3; ^$ i" A. T. m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN( b/ f4 P. a# @7 t, a) |
+ A Q$ V! R" r% n
delay(20);
( W2 o3 }& i" o CLR_SCLK(); e g4 H8 h; t/ F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
) n1 K7 v$ e8 ? O3 b6 g/ [: `+ F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' U% [6 P! D0 @1 X% V5 b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# R: y8 G" v3 Y% w% v delay(20);
% U- j4 n# \* S# S9 x4 O8 v }/ {3 }0 s9 n& v2 |1 ]3 G3 R
}
( z0 R. {. T' R ? |
|