|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 e' I1 M8 K; M) k% h ?# @! x
void PSCInit(void)6 c: T8 o3 N: s+ f% n% F/ r
{
! H1 h$ u' Z. b3 l- ]1 x PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ @. c7 Q& u! @' d8 l}$ q/ Q- |; [ C, a. A8 l7 h
3 K X. H1 K/ f; X6 ]0 M9 B, s: gvoid GPIOBankPinMuxSet(void)8 M1 v; K2 k0 u9 C, k" Z
{
7 N# ?. U+ `+ w* v // DRDY ------------ GPIO6[14] -- 111' O9 e) |* \; u5 D: K' E) ?
// SPI1_CLK ------------ GPIO2[13] -- 46: y+ j" x" O- M9 ~
// SPI1_SOMI------------ GPIO2[11] -- 44) e! T; y& r- }+ w8 A% j
// SPI1_SIMO------------ GPIO2[10] -- 43# x9 c* B! a( _
// SPI1_CS2 ------------ GPIO1[0] -- 17
( s9 \, {7 c$ @" u. b7 V1 J( l$ d4 h // SPI1_CS3 ------------ GPIO1[1] -- 18
8 K9 |7 o6 P9 P' F/ Z; P- z6 h8 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' ~$ u. Q" J7 [8 e6 `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);7 T% F: b. f0 ^9 [$ s8 T' s# F: R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
6 I. r6 z- ^4 P( g9 X$ b& W" V: o7 Y
//DRDY
% E( o P' R- g5 J9 d4 E3 d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) j$ N5 ~. Q" t: i+ n/ g( \ // CS2,CS3
- \, ]; X- ]' l4 } GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
1 A& ]1 P/ G3 e# j6 W1 d! `2 l GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 j3 z: u9 D' \( T! d
//SIMO
8 w/ n) p+ X; | {8 @( q! ]/ v GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO2 U& x1 F+ B& t' u8 W/ }/ v1 p
//SOMI
* j5 P4 `/ j! R GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
, M2 c; }" M, X$ d2 v1 L //CLK; I0 G( n X8 `1 s- c: y* y+ Y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
! v" n+ U5 y" o; m8 d
/ |$ @/ N! M3 }9 y1 F4 L // LDAC
3 m2 h {, q$ f' K$ H7 ? GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 } m$ o; X I/ i, f8 `4 B L% i GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) P/ ~; \* q& s( q; |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" c( d" J7 n" B7 R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 ~- {$ A2 Z) \9 B5 T+ S GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 D2 S. D5 x/ p( b. O* H}. o) a7 M, f; L& q- t( d
3 {7 Y8 A$ j3 ~- u2 Pint main(void)8 A; j2 ]7 ?# o% y8 w
{$ F- a" f: U1 ^
// 外设使能
r* b% [# g. |0 \ PSCInit();: A' F& K6 I, q& Z! R/ n% _
9 J6 p( f1 a" \8 k0 D
2 S4 b6 P& N3 _! O# K8 @ // 管脚复用配置& Q9 b# j+ z! K5 G) H( q* N ]5 N
GPIOBankPinMuxSet();* E+ M' n y9 ?+ J4 `* J: }3 G
for(;;)& C0 U" T5 ^5 i2 ^, {! k
{
, a2 Y' ^/ R# B: u SET_SCLK();//时钟正常输出: u7 }% `- S* U$ c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" e W, m6 I, E# a7 k" g) D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 w, A4 ?; K2 a4 B; X4 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 t+ F! i7 @. {: I4 k0 q: G
; p7 @) L7 b2 u3 g* _ delay(20);
$ H0 D% w$ ^ u3 k1 Y; {4 M4 C CLR_SCLK();
6 [3 M4 Q3 d& A0 W1 i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# {6 S+ f r, `4 p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
( z! L- `* u. K% P/ B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 ~: }* ^- U0 I5 f! [
delay(20);% C1 ]; u! v5 Q1 Y. }1 M% W; Q
}. O! ~ z6 J& x( P+ E H
}
# ?+ H* A$ D0 Y1 Z3 h$ Q |
|