|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# b1 k3 q" b( u# l _# Fvoid PSCInit(void)
' i+ [3 C& O6 S( j6 j8 `{' L8 q- @: a p& g
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# y* H5 @- V7 x; ?0 E; v' t( l6 ~ `
}* v7 X" ?! q/ a) U7 d: s
& d' N# {: x* s
void GPIOBankPinMuxSet(void)! Q0 U8 `. y+ \; T% y
{ B4 g0 S. M0 P% m3 O1 J3 ]: E
// DRDY ------------ GPIO6[14] -- 111( k4 a/ w% t8 v: b- V
// SPI1_CLK ------------ GPIO2[13] -- 46' U/ G& j' `* o- D& v: x# w
// SPI1_SOMI------------ GPIO2[11] -- 44
. U& V! M s* a) }* N" c // SPI1_SIMO------------ GPIO2[10] -- 433 ~) g( v0 A. j m# H6 g( q9 |
// SPI1_CS2 ------------ GPIO1[0] -- 17! ?% A, K2 v8 ^3 J2 o6 M
// SPI1_CS3 ------------ GPIO1[1] -- 185 h9 A% q6 o/ d& F" b8 n! k% L6 o
6 T2 M2 X8 X5 v( D) _! @$ [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
+ p1 n# {6 a, ?- P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 O" x: Y3 F' G0 Z5 T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 k: V0 C# `# J4 X, u5 \0 r% r3 N. l7 y3 D% g4 g4 C( y: s
//DRDY
: A& Z6 I/ n" Z, a! G1 P% G GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( U! R2 j$ R- k: p8 ]+ ] // CS2,CS35 f, ^* J8 I3 L! [
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 }( Y* |$ R9 v n, {5 I6 }; a
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 y; W- K& W) r; N, n
//SIMO7 Z% Q, Z1 t- P6 g2 L4 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
[2 y3 I ^5 ^0 r7 l" @0 Z0 } //SOMI) j+ I1 N9 v0 V: k+ E$ t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 z) x/ g. b$ j0 M1 ]1 } //CLK
+ L3 b6 c2 B, `+ Q4 n5 ?( c GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK' |) j4 Y' I8 t! `% V. n
& w" R, c6 H! i5 @6 ?( W% E) O
// LDAC
' q1 D2 d: y4 E+ W2 w' k GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' t6 g; Y9 I+ Z2 T- B* Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 F9 t9 p1 `; }0 x; H+ T* n4 \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 e& V2 K+ S: b! ?) `4 f' k# W' |8 N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 u9 X' p) B) ]4 S2 t GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY Z3 A; f0 C$ p, c$ y A
}
) Q! t' r& e* r& B
3 @# u( L# m6 J( Z* g- `int main(void)$ F) Y# Q; _4 c' ], `! ?
{* r; P! K- x; g' t
// 外设使能4 x8 C, ?1 G6 M2 ?+ ^
PSCInit();
2 {! P9 O7 q- `: F: B' F/ z& W! n" q/ Z) e
" m" w, I5 U. b+ }+ \
// 管脚复用配置
1 ?$ I# {, E9 Y g GPIOBankPinMuxSet();
, ~/ o% H2 Z: k/ B; X for(;;)7 O+ g9 q0 \, M% p/ P# A# V
{
* ^) A! i% F1 X' J/ b" H2 p SET_SCLK();//时钟正常输出1 Q8 K% S% U3 o7 @. N4 h1 A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ O( l% f& s6 u" M4 F# H: p0 @: _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
' h$ [5 S8 e2 y/ g9 u! e& s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
2 W8 }7 c, Y! ~$ J- E' \( N, J4 A4 B0 M: ]. W
delay(20);
- o: u# E; Y+ k0 O4 g CLR_SCLK();# r. S7 r2 X0 y" q+ f5 F: _1 v$ ^# v: m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( ?+ a7 f2 ], Z$ t: ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3: v; n0 G V- k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 r% x* B( Y( o; L) V% U delay(20);- H3 J6 L8 m+ J4 k
}! X' a/ M% Z* L5 L- T
}% p6 K0 w3 d0 ]3 V0 g0 x
|
|