|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
P4 `5 V. y1 {* p9 E" E9 nvoid PSCInit(void)# q+ b* B! ^9 ^
{/ H& h, a1 X* C: E
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 d9 k. L' ?' U# g8 C3 z' r}
: Z$ B$ w6 g. d' {# P: j
( y0 j8 H2 F- A6 V# y/ fvoid GPIOBankPinMuxSet(void)8 Z+ @5 }) |; b* z
{
+ s( ]6 j& q7 }& ~$ }( z // DRDY ------------ GPIO6[14] -- 111
' _, F9 S; m% p2 R8 e6 c' c+ r // SPI1_CLK ------------ GPIO2[13] -- 462 O: K+ I( l+ s: p" k
// SPI1_SOMI------------ GPIO2[11] -- 44
; K# \1 U Q5 v1 G // SPI1_SIMO------------ GPIO2[10] -- 43: U1 i3 w) g: ?% Y2 T+ g1 [/ K! z8 G
// SPI1_CS2 ------------ GPIO1[0] -- 17
4 _! W ~, }# V2 q // SPI1_CS3 ------------ GPIO1[1] -- 18
1 j# ]% t7 H3 M; _2 T( k7 @% P/ F# z8 O6 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 X1 X8 n+ m, Y6 ^+ W3 y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( y! d( b7 S% h" V- [2 `( R3 K: c
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ ?+ z7 N0 i) U6 C' W1 y& c, I: {; l Z7 q3 ^
//DRDY7 ]% P; u1 o4 h9 ^/ w$ ~4 s" X
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" I! O( _7 k) t: `- Y7 C A // CS2,CS3
`* k, _6 l7 I: I: o2 Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& D) N+ ?! I p: S: m2 R) z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3- N* {' t# [& i5 x
//SIMO1 {0 b1 t" |3 _# o
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- s1 j' s. m- w //SOMI: k3 F8 Z9 S! s, R+ F
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 r- D6 |# _6 {$ c% s7 q //CLK8 o7 N, x! J" U! u$ C# m: y* h2 C
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" W- d* p" F! A* k$ P
" ]% z! R; s- q% a9 h) Q7 Z
// LDAC
Q9 T1 u) X) q% J; j. z3 G/ D. N9 T GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
% [. o6 E+ L$ d g8 W) M' | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- m% p7 P. l8 K6 A: Q/ [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& k! w; V: L$ P' z) \. Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3% z& g4 X3 ~ C- i4 A
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 @( n( U: L& Y6 V+ \8 X# x}& z8 F. W4 n' L3 M, {
$ t, c' M: N: s9 V1 y) tint main(void)) {9 {% q( e" p2 x' I2 C# k
{+ A7 m6 W, }: P% l
// 外设使能
4 Q% ]: t( |& G: b$ y9 k y' v PSCInit();
7 s. H# [; `. b6 z# u8 M9 K% f) K" d; c# H: o
5 h) w! `4 X& a: r: _ // 管脚复用配置
! v5 }% x# e& D) o/ h GPIOBankPinMuxSet();
: P: C: C4 r" Z' S( a, T, z# v for(;;)- I' [# {' W8 D0 F$ f3 V" [5 W6 O/ [
{
2 \2 R2 s* {3 f2 k! a' _ SET_SCLK();//时钟正常输出
$ d: L: S2 Q, f: D5 D, I6 t( k) l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: B2 `# p) V8 W4 Y6 {, s4 A$ d' L) r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3( Q$ [0 e) B6 V. ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; T6 C" E5 {8 [' R8 N7 ^3 d% m7 O7 y
delay(20);% X4 y: u& n L8 @) Y" x0 A
CLR_SCLK();. L1 U; u% {1 ~3 ` J/ f+ s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! V j9 C1 L, Q* o/ X. U GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& D3 q4 L: y% n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 C y) W- w3 W" H1 z& a# c delay(20);
: k7 z$ U4 c" }2 K( C1 p }2 E) j3 E2 W3 y! Y
}
4 P+ g3 T" Q+ I; x- Q. u# @: P |
|