|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; P' b [) @/ N$ z
void PSCInit(void)
5 M$ t, E5 c9 J/ `: B$ h{0 U7 B, R" V6 g" Q6 v- @& ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; G. H, {( ~" R" p; ^ V3 s}' L o, O8 W; u; e( L5 z# S
: d# o; T0 X+ Nvoid GPIOBankPinMuxSet(void)
% H2 q! ^, x6 [: t7 ]{# ]* O- X+ ^) j8 J1 _- X
// DRDY ------------ GPIO6[14] -- 111: Z, J. `5 U8 t$ s8 t# l1 I
// SPI1_CLK ------------ GPIO2[13] -- 46
1 [% I, r6 Y E, y- W/ S // SPI1_SOMI------------ GPIO2[11] -- 443 h ?$ i- H' g+ J; {; Q
// SPI1_SIMO------------ GPIO2[10] -- 43/ j e4 G5 e7 b' `6 w/ |3 @
// SPI1_CS2 ------------ GPIO1[0] -- 17- v# W) y. v5 L& J
// SPI1_CS3 ------------ GPIO1[1] -- 18
4 _9 F1 F; S1 n) D- U/ O7 g# I& {0 d( U/ y+ d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);# G) I& T( n6 \) Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
/ Q* S) O+ a' a3 F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 u, @ m4 H# @0 ]7 A4 @
! w5 ]( F9 B9 J8 [" k9 s' B% K //DRDY3 O$ n, L( \) N4 E( {0 [. R+ _0 \8 ~& _
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY5 I6 e/ t* K% d C3 D h
// CS2,CS3
( l5 }- D! e- c GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: h1 {6 i) j# |4 z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 T6 n/ P/ [& y# i //SIMO
6 i2 a6 k- l, f- J GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO0 G8 M2 X1 { l9 y; o
//SOMI1 y- u) m8 @' j1 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ Z. F. \+ i1 e2 \% c- Z: t
//CLK
2 `' u! C' A- d6 L- e# Y2 a: m$ y, W GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 s' i) G) J- q- |3 ~
. v8 c1 b' R9 P" b
// LDAC3 \8 Q+ g2 J- H# d7 S
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, @, K# `- M% O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% R. w1 h, g/ \8 l
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
l7 G' ]3 R! y/ b) q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 V5 e" p' ?$ q p2 q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
8 X. ]( ~; _# d. D/ S' `}
6 Z' C& p* Q4 V* L+ h3 z$ @+ n p4 Z2 l7 x( C. k6 a& l
int main(void)7 q6 r4 _ f5 S4 u
{
1 ^5 L& g2 l7 ^+ V% e4 H // 外设使能
$ B/ Z% }4 K# p# o PSCInit();" a8 s; t+ G5 X& S8 y3 {
5 z6 e( h& A+ T& k: t
3 P% ]5 t# B) u+ R
// 管脚复用配置
) ~ b* }8 J0 T6 J, l GPIOBankPinMuxSet();
* {: n1 O7 U" e( R5 ^( w/ | for(;;)# P9 E2 _' P5 w; J
{
' x" |9 \' H# l4 i, o+ S2 H% U SET_SCLK();//时钟正常输出
9 O7 e1 |5 o: T; _6 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 ^( @+ b0 @. `, }: c4 f: f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
4 j. S0 _6 X7 }6 }8 R. ?; r I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 x& y. _2 C( f/ H/ H2 P
9 l) H2 L+ `& L( Y! D delay(20);4 Q( Y% X9 f2 z. i
CLR_SCLK();9 {, s/ i# o" H1 T
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% H# P% p' T3 ?- b4 i8 U- i GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 Z. T+ {. I% Y/ f2 K. p7 r, J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! P5 ~% ?1 N- _& D5 [3 K
delay(20); j& l# H$ t- s' s
}
: k: W$ X( |# \5 U" D& e}! p! g) \/ q9 H1 y
|
|