|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' M7 B6 O: \. w( {: ?
void PSCInit(void)) l: d$ t0 l4 M( i1 ]# w$ g9 F* ?
{0 {$ e; } V! C2 q0 ?5 S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 q3 W" _* `7 B% N% g4 E& p' W, r}
8 A1 f( I3 n7 X/ W
5 _, @- \# A7 I5 A M( {void GPIOBankPinMuxSet(void)
3 |8 p# S1 x' L0 T. L/ B{* Z8 Q) J7 R* d0 W! q( \' K9 t
// DRDY ------------ GPIO6[14] -- 111
' s* t4 P* h) C0 i( a // SPI1_CLK ------------ GPIO2[13] -- 46
& [5 F: {0 Q. U. }: L // SPI1_SOMI------------ GPIO2[11] -- 44
( o# f3 t1 d& e5 P // SPI1_SIMO------------ GPIO2[10] -- 43
/ Q. B' S, K9 k: _" y3 ] // SPI1_CS2 ------------ GPIO1[0] -- 17
( @) k- x2 |9 C$ D' n // SPI1_CS3 ------------ GPIO1[1] -- 187 }: h0 f7 q3 C+ D( _/ S
e7 C1 l- R' _# D0 v6 m5 C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
i* x/ x0 w% {0 H: ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
, a9 C5 `* m) \: N3 V$ M$ M; t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 Z v5 T3 P6 v6 p$ E9 J, F7 F: _% \" b5 ~9 H
//DRDY* n& w3 ]5 P+ h/ B6 ]7 j' x9 U
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 O! Y! S* K p. p // CS2,CS3. [+ S6 ]9 B9 |9 A' B3 B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" s- x, o9 Z- h9 T
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 r+ ~7 \7 c: L& u) _
//SIMO3 y [; c) a! q% F2 l* r
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: u7 h/ `7 ]9 n$ X9 ], e) H8 B8 c
//SOMI% _* R; e/ Z0 q; p$ T: u
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 E9 N3 T1 }6 m6 X* \, U3 O5 d
//CLK, l7 X9 q8 k5 y4 a: _2 u$ ]
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ [ S! c k$ s( G
/ s4 j- L1 h# G8 U7 Y. N // LDAC3 U% v! e: ?7 |; ?. B+ j+ t
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# ~ s, ?6 o* B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' D% q8 W# ~7 k6 \5 e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. R! u+ o* S2 [: [; v7 U
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" F8 A! _: O* ^+ u% Z7 A GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- m0 w4 t0 s/ h1 x; ~5 b}
- o Z& h _8 j7 v2 B) f; q% U8 q! k$ t
int main(void)& M; M# t& ^+ e: c6 W v
{ G( W! j5 C d) q
// 外设使能
8 X% {6 d6 J# P# f& [ PSCInit();/ X, m8 n/ n4 {# N3 F0 a
4 G( Q; U/ t# g9 @+ t- _ J5 `$ [" A
; _- V- [6 K; N% D1 Q! x* D
// 管脚复用配置
; E# x* B& g0 ]( Y; o" I GPIOBankPinMuxSet();$ P6 F ~6 I" U
for(;;)
+ R' [+ t+ j" N# n9 L: Y P3 k {
5 d2 m& s) C7 q) P SET_SCLK();//时钟正常输出7 F D( h6 H. t o" ]' F" Q- j2 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! ?2 G& M! x! D2 L1 u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS39 `4 |0 j: p! o* ?- D) X
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( X6 A4 Y* S' h4 d% ^- v3 |$ O* X0 b, r
delay(20);2 h0 {; x. ?' l: m$ x
CLR_SCLK();) |" q' p' w T. c6 N8 S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
" D) {$ C- o1 h9 A, C7 q. K$ A# ~; T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ B& H6 {! B) ~" A0 V3 {! p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 c: P& p) F; Y delay(20);6 D* ]2 Z/ P0 A! L
}' Y* Z1 ?8 ~6 P
}
, b8 H9 P" M, l- a- | |
|