|
|
使用下面的例子代码,不能使SIMO和CS为低电平:" Z+ Y4 v. |, e8 {4 S! |
void PSCInit(void)! |) O# h j4 v& ]' O
{ Z. Y9 ]! N/ b" U$ L% h; x6 v
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) f+ I# F7 l. \}
. C2 a h. }- r8 A" O4 w
! o; y' A0 U8 |7 i7 D) S+ F) ivoid GPIOBankPinMuxSet(void)8 o T- y/ } X B; F3 O4 Y0 `
{& f3 ?$ f7 S! i: q8 r% m: D
// DRDY ------------ GPIO6[14] -- 111& I5 {( S/ H8 V- F) S0 D9 \
// SPI1_CLK ------------ GPIO2[13] -- 46
- U& X' C. i: D/ q7 R( [5 U // SPI1_SOMI------------ GPIO2[11] -- 44" T# G( M: ?; D" N% y6 U
// SPI1_SIMO------------ GPIO2[10] -- 43
, S$ v# M2 y" R& W // SPI1_CS2 ------------ GPIO1[0] -- 17+ Z4 Y: P' t; I3 _
// SPI1_CS3 ------------ GPIO1[1] -- 188 n$ Q5 A n7 {# C# ^& H. J# W
) P) Q2 B( [0 D# I" v* z) Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
) l4 K1 j& ?1 X$ o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 N2 n; a3 F! Z5 Q6 o0 U) ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 }4 u5 b* o! B
, N4 l) X2 o# S" G# p //DRDY, {6 l& N1 h# L7 q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY9 y0 j( C$ M. ?4 ~
// CS2,CS30 ~' B( ?% X# X2 L* }( p& _
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: ~0 \; f/ z# A9 Y! e6 f GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 J( x- g! x4 d
//SIMO
4 h: z3 r( l7 ^7 {7 [4 {4 v GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO2 a6 ~4 m, `1 g2 b: f3 d0 M
//SOMI) k- d0 c9 ?4 o; r; I- r' H3 G
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! r( r+ [+ ]" M. q //CLK
0 v% Z/ H7 c3 G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
! Q. `! v/ ~. S$ n
& t Y0 ? [1 M0 c1 |2 S/ L // LDAC
. p* L& c( r8 b: ?$ B* x GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
" N/ u5 E5 O5 a7 r4 Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 q- m1 ~0 o1 O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' r* C, `: J! n! T" L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' p: _$ \- {2 }# y. W GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# i: @7 _5 z$ W- n
}2 F2 t/ ^, h, Z* L9 O8 d; D
. y2 A" L; q7 N3 |& L# D0 R$ ^4 Zint main(void)
3 h9 T8 z0 F8 E/ A6 b( y{, Q3 n. [- o, l2 t
// 外设使能
& K, Z5 W0 w! M) z- G" z PSCInit();
4 t5 r7 d ^# r7 I+ Q* q, |* l
. V( Z) A# `, Y4 f9 A
// 管脚复用配置. R5 [2 g) Q3 F+ R" g
GPIOBankPinMuxSet();
. `/ H! {' _( W4 o, ~ for(;;)
" Q6 z" {2 x. z% Q' j {! T# ~) q' g& P2 f
SET_SCLK();//时钟正常输出
8 f) p, B0 h. |* B8 b0 | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 a3 o! C- H- C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* `/ {& l/ W, U+ ~& M" l X- A5 _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 O2 u% ~" Z" Z$ z' V" l2 }- S+ Y/ }1 Y: }! D0 M/ v
delay(20);+ _' _8 `, e$ s( |4 Z7 h
CLR_SCLK();
K" u) f' o# b8 T0 O. ~# n* P3 A GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, ]5 X6 s" V2 ?2 X0 k4 m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ a6 f x! {7 p0 P7 v7 a) `) ^8 x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 R8 P6 x* u; ^5 [! \* r/ N# O: N
delay(20);+ V2 B$ i- K* ?) p
}
) w# G% @1 N1 w' ] \, |}* |# d* |4 a* ^) v' r+ m
|
|