|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
6 A* }2 }" O% e/ cvoid PSCInit(void)9 \2 m) v. J, c `6 Z: x! [' a
{
2 E8 R) \" P% p6 [, a/ a9 L- J PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 r9 l$ Q% C5 E# m( W, f7 x}4 N. E& }& c6 N
w& c& v( p o( |6 A* f M# k
void GPIOBankPinMuxSet(void)
1 B9 d3 o1 {! u9 I) D{
) X& @. q, Q% f // DRDY ------------ GPIO6[14] -- 111
8 z! @1 h, W) A8 V# `5 _ // SPI1_CLK ------------ GPIO2[13] -- 46
7 G8 X5 J% @" A7 a$ { // SPI1_SOMI------------ GPIO2[11] -- 44
, f' W* @ b8 F( u) P9 q$ Z* j // SPI1_SIMO------------ GPIO2[10] -- 43' b! B# @ W( c/ d6 X7 R8 ]
// SPI1_CS2 ------------ GPIO1[0] -- 178 u; X* }$ p! ~" b/ x' F$ \
// SPI1_CS3 ------------ GPIO1[1] -- 18
0 {3 n& ?/ g! V' S. t# z) T& M6 V J& F) n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: v7 D: U/ f. F! L$ ?0 ]% H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! F" v7 Y. c, R; Q/ B( W3 F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, v$ }+ d$ a8 k9 c" \7 {
7 i @0 y& R+ C( _# i //DRDY
& ]; _! D& e7 `4 L0 E* g( k GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, g0 I; g' q1 v' z1 G% B // CS2,CS3
8 O) b: [4 `* p9 j2 k, j GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
$ ?4 M' E2 k7 l6 T GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( K; {8 {3 m- H0 Z
//SIMO
. B. i9 f, r9 z" W( c3 ?; I) n* Y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( M& y4 l/ g, g! c! J6 a
//SOMI$ G& P; @3 f# Y% a
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! l& {, Q: j/ a4 h
//CLK
/ D. N: V+ p9 Q9 V GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
5 t: s! N- }3 _2 u& a
* ^9 N5 }! `. l" u2 N // LDAC
( b8 k9 i, e+ W9 }- O GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK/ K/ n1 P* b9 }* n7 \5 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
V) k5 u! c/ o" R8 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' e9 K$ {( E- [) H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ p X! A& m! B( E: T O/ V8 G( { GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 w- n/ T5 p2 f6 A' l9 e
}
7 q9 ?0 V: @7 e+ W( }( u& D4 a9 A) _. u. ?
int main(void)
4 h3 P5 P1 A# z9 E{
2 F' S, i) J4 u. P8 n; L+ v // 外设使能7 Z' A2 H3 I9 Y) x6 P& F6 J1 b
PSCInit();, M7 U# a2 J1 o0 H, I" v9 K
+ P+ x# K3 g) s+ m/ r ! k+ B4 w8 U1 m' n. ^
// 管脚复用配置
9 ?! h; p$ ^5 g GPIOBankPinMuxSet();. ~$ B J- `9 D8 X
for(;;)3 h( j& x) j; K. V8 N
{. \# r# S% L* @+ @6 i* F) N
SET_SCLK();//时钟正常输出: c1 v: {1 f, T" D; A: E7 N9 `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. K+ T0 c; ]3 i: } GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 j1 q9 V; c8 d0 q$ w& B; H* g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
2 Q5 v1 H% c! C8 X/ B4 y6 ~; @
delay(20);4 r( p/ a3 \) z0 j4 p" a
CLR_SCLK();
! l/ X M) Y6 d5 D1 | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* s, d% `, k' V/ g0 ? v: z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 @2 ~% m' P/ x; m8 v4 ~2 C GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 G$ u3 [' A& p: l" E+ x. D
delay(20);; G/ x |. j) w- D/ U
}
4 S; b; N8 K' Y$ j' ]: C# {, U}- D. q4 ? v' ]
|
|