|
|
使用下面的例子代码,不能使SIMO和CS为低电平:& m: E8 l2 S0 i$ ]
void PSCInit(void)- _& V1 V( p9 u+ m7 n8 l) t
{: J) b3 S, P6 ]" W2 U+ C
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 R C. ~, z# R}! e' {1 g: | f$ G
! _* Z9 j/ ~' a1 Ovoid GPIOBankPinMuxSet(void)
: U* s. C; _! h# ?! n{
- r& `5 G* t# e1 e+ y" M // DRDY ------------ GPIO6[14] -- 111% `- F& h( d# e# R
// SPI1_CLK ------------ GPIO2[13] -- 46
5 R% u+ @4 H) O // SPI1_SOMI------------ GPIO2[11] -- 44# t, |4 ?0 x ^2 w2 i
// SPI1_SIMO------------ GPIO2[10] -- 43
2 x, Y0 M+ y; z0 _( e" Q // SPI1_CS2 ------------ GPIO1[0] -- 17
5 r; F: G! N7 r$ O // SPI1_CS3 ------------ GPIO1[1] -- 189 i. @9 ?# L, ^6 I* n
7 V0 B5 K$ R6 e! Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 _: x' S- `. C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 N8 m7 B4 G# m* w1 s* ?0 S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) j9 j' i9 m4 i/ e) K: W3 ~9 W. m
: i1 u9 z8 w- @6 p# L) D //DRDY& P0 r; W% ?) l' R& V/ s& `$ }' X
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 x: s. f9 X- v
// CS2,CS3
, O( K2 f8 [" h2 e' P GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 B- R3 b1 O/ Q3 B! L
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3- o+ O3 d0 H0 [
//SIMO3 I4 S4 m2 i7 `( l8 C. C0 s+ v
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* @5 q/ }) N/ |9 ]
//SOMI
! Y3 ], u+ L, Y. u1 y GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI1 u9 W$ @/ I$ B# j
//CLK
" H' N# |. y7 r! B% V$ _5 K GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK+ O& m5 {7 e, U3 k: ~8 C* h# n
) q& }$ T9 C' @4 W- U // LDAC# i* l# S! j3 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
7 u' x& D% e0 w2 a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. U+ I7 x" A: P' i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: l/ U& X9 l3 {* \+ ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# f- t/ Q1 E; A v+ g% K5 T, X GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 X0 o( L" j/ v% a2 E
}3 o6 ^& ^' Z+ d# P
$ {$ y+ X6 k' g; Y9 }2 |! I4 W! N
int main(void): A9 K8 t" P! j" {/ \" M0 J! Q* I
{4 G- N8 s8 U# [
// 外设使能) R6 ]. u2 q! z8 x8 j. {
PSCInit();
% L! ^2 l+ i- O5 v* q5 y
" m; ?7 M, @8 o
. f2 @) O, j+ D! f& D: @0 c // 管脚复用配置
5 ~0 {1 k; e( q3 f* \ GPIOBankPinMuxSet();6 B+ p, Q+ g1 y8 E9 V
for(;;)
9 U5 s9 s4 ]; X; ^ {: e% N D4 Q3 m# K4 M: d2 U1 K7 M
SET_SCLK();//时钟正常输出: L# M4 j# p h" d, I
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ G$ n& L) }# a, e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 P& ?; S, ~6 t# f2 \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
+ y$ ?3 G7 Y; T2 _1 Q! z: y+ @" G* h0 h6 U0 h2 [- Z
delay(20);
! c( H/ {+ k# H CLR_SCLK();
6 f9 Q" D9 i3 d. J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* ^$ G2 ?/ @+ q0 q8 |" I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- u: }: r3 c4 k# m) p; j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% U$ j W: I/ O+ C! t: H8 v6 Y$ | delay(20);/ p7 f7 M' b* g" i
}. P: R0 t [- m$ L& V! A
}
$ }% D; n/ ], s9 L8 q |
|