|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 I0 Z: k! C* w' uvoid PSCInit(void)2 } m+ e5 n2 C' D
{* T& a) f; u8 c# e( T: k
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ G9 u, P' b% a0 c7 H2 v2 @}
4 I- W! M" K$ G
" _; K" d% J9 W5 v6 H2 C: Xvoid GPIOBankPinMuxSet(void)
5 z3 g5 b& M% _8 m6 |/ Z' J{
7 T9 H! F! \6 m* m. z // DRDY ------------ GPIO6[14] -- 111
. i+ U& S3 M6 y! ~0 [. j; v // SPI1_CLK ------------ GPIO2[13] -- 469 I! n. r" J- ^- c+ ~' J/ r- ~
// SPI1_SOMI------------ GPIO2[11] -- 44
# `6 a7 H7 B9 n. O( G& ~9 u* q& h // SPI1_SIMO------------ GPIO2[10] -- 43
) h- U' a) @" J5 ?8 v) J // SPI1_CS2 ------------ GPIO1[0] -- 17
7 e0 B7 y. c- C // SPI1_CS3 ------------ GPIO1[1] -- 18
7 m3 P& [" A' f9 k O3 K( U; w7 d H2 [5 f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 s7 M# f I: b% H+ I+ d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 Y1 W5 _( i) _& U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ W$ J7 i L. W! s- G
4 x3 Q7 i2 l3 S# c5 S8 P
//DRDY" n/ [( f, j+ v. N. G% E
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
+ M; F* `7 ?8 R" r5 i0 g // CS2,CS3" M+ J6 n/ l" N6 O5 q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 x& g" f; e4 A' |' R5 T0 ^: ~/ w
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
0 C5 v3 w Y7 l //SIMO
0 t! v' Q# K, k' A, q: ~4 Q B @ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- t2 o# f' u9 E* t/ ~6 U //SOMI- T0 t% Y2 E# ?+ T% l
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! m7 M- }/ U; w! E; O6 Z
//CLK
' a6 b/ ?2 E- c6 T" h GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ B1 S) K4 M, A) _6 N0 c/ Q, ~& x3 l$ D2 [" J9 T- }. a
// LDAC
; ?/ _) B2 Q! H8 }4 ]0 J; d) A GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' ^, O* J$ V7 D) p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ ]7 K5 g: S. W1 N: } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 j) S7 e- w1 S) G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ k. ]3 @+ x3 k F* e
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 A$ a, A( Q/ J! g. E7 o6 ] J}( ~! b# d, \1 v& L$ t8 J0 _- c
; e& p* ^2 ^+ P3 H9 B
int main(void)
4 b( r& l; h( j2 R3 d* o g/ j{
. n( M0 T& L9 V: ^! W5 G // 外设使能
/ K+ }! H1 z5 H5 X PSCInit();
, k" @; V! X! \* F1 B( V
5 s; `8 r. h- P
h* o4 T* }8 o0 H8 |1 {$ V- }$ f // 管脚复用配置9 `# }& Z- g" P- [3 l
GPIOBankPinMuxSet();# t: s( T; _$ l) \7 L5 I/ j- `( R
for(;;)
& N! a: r) ~) o! ^% ^6 J {. t. R' `& v c5 b( J9 p; m3 U
SET_SCLK();//时钟正常输出
. V& h# w0 E, O/ u, w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 Z. s' T# l- E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 ~2 O( M! s5 I# d+ F* d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN# Q3 {7 p* q) [) M1 E1 z8 A
0 N* v- I6 M$ @0 D# A
delay(20);; f) q3 x3 V# z) y- e
CLR_SCLK();
5 b7 y7 {5 @ y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' ]- D2 F) @, I& Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 ]' U, y9 {% ^2 G6 U4 Z- ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) ^ I8 I! d6 O: N) a" ?- l% o' M4 F delay(20);
6 d4 ^: n" @2 M }
# A( l- I+ Q- U! n}
3 H3 a% [- c8 X; } |
|