|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: k g. p' @0 Y% Z5 b6 \void PSCInit(void)
. Z% F, X: i( l, a{
% C' A. X, U) r; H5 ` PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);) T* p& L* m- H* \( v- |4 t
}
8 ?9 n. Y6 n& v7 c$ |
% |, @& L# i+ B I: K9 \* Y, Uvoid GPIOBankPinMuxSet(void)" _% D) m4 y! o' j" \
{: i. o6 n3 b! W) T! p
// DRDY ------------ GPIO6[14] -- 111" K* O ^! K8 \5 L- S: a* I
// SPI1_CLK ------------ GPIO2[13] -- 46) j7 s5 L: a4 [" P% Z& J
// SPI1_SOMI------------ GPIO2[11] -- 44
4 @2 a7 D6 N% ^2 j // SPI1_SIMO------------ GPIO2[10] -- 43# j; z# _" O2 Y1 p3 h
// SPI1_CS2 ------------ GPIO1[0] -- 17' k( o* } E/ s3 Q
// SPI1_CS3 ------------ GPIO1[1] -- 18
+ a- F4 j; B1 N6 Q3 X# W7 ^+ a+ p0 ^+ D
/ F( t2 P7 _) p7 m9 { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 ~) @. z- W( o5 l/ b' S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);3 D# b9 C5 c- Z4 D7 _: g; S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
6 Z: R! M; a* Q* O0 N& h! `) c) @ a. E0 }4 B4 x8 Z% k. I% C
//DRDY4 v2 J1 P2 \' n! Q$ j
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 V" Z% n% X' b* B7 T! A& J
// CS2,CS30 m. P% [4 E8 |( q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# E' Z% c4 k# H4 ?6 l
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) h- v/ ]1 T9 V1 l' t8 p
//SIMO
: Q, [! H c3 g8 r) m S GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: G: r' V: Z1 a. n: L //SOMI) v4 X- m" Y! B6 y/ B- \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! C! z3 S0 `6 r: N' k3 k, V //CLK. J3 J6 |( } \, i2 c; r9 P$ l
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" c& F4 V) R/ I3 l7 ~$ m8 A
$ W. |7 |( f& U // LDAC9 F7 g* g" B: D1 m
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! O7 m- D' o s z5 t; {1 r* @7 `/ [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ L. \% a, u9 j X* W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 z& a+ d$ }/ h$ O& S: P% t! L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) V$ l/ `8 o: G7 \7 C% O
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. g) p8 {+ L. e
}; H" S! _6 @- L+ h
4 I& ~8 G# P9 R. R% c
int main(void)
" E+ C# I4 t8 L2 e{( i. w9 l* ^" X8 Y# c
// 外设使能, C- k" ^0 q$ d* \! @
PSCInit();
: a1 A$ [# g9 Y( P
5 j! p6 S8 L& ]9 l7 ]; S1 b7 d0 j $ i" c0 W' l( x- H
// 管脚复用配置
4 P% k4 L" w% L GPIOBankPinMuxSet();0 u5 c5 ~. i% W- F' G
for(;;)" {$ q- M% L, }* I
{, V( k/ ~( M- J
SET_SCLK();//时钟正常输出
( m4 {1 Y# }; `5 m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# d. m+ w) `2 R) K6 b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
6 m0 L. I6 H; X3 T2 f; Z$ j' ]3 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& _6 S4 p& H: ]0 Y8 m; o* O
% C% J( v5 o7 q5 t/ s delay(20);7 }' P4 _! [6 A0 @" k* ]) i
CLR_SCLK();
N% ^6 n; m& i6 J( ^: o/ ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS38 d8 U2 W" m2 l* M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ x* e1 P9 v2 _% P- U% R: o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
D! s- c( E9 {7 [ \ delay(20);6 V0 T4 S, Q, `/ G: h q4 U
}% |/ j5 ^; }) U3 v2 }$ r- o
}& a! a: L7 V) S8 R# X! u! {/ S
|
|