|
|
使用下面的例子代码,不能使SIMO和CS为低电平:, e6 b# V( j0 Y# {
void PSCInit(void). j7 d6 C; l) U$ H
{% h* @: x( K" m2 B
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
8 Y$ J& ^. H3 }2 _% s6 V4 T}0 R# a# Q- R; ^& E4 S5 I
: _0 Y6 ]+ M7 K( ?
void GPIOBankPinMuxSet(void)6 ~# n4 I0 x" I+ E& E K
{2 [! c8 |2 v4 Z% \% H
// DRDY ------------ GPIO6[14] -- 111
: T6 g' {* G- A( z( [; a0 V& Q // SPI1_CLK ------------ GPIO2[13] -- 463 ~' h0 L! ~1 n7 R$ A
// SPI1_SOMI------------ GPIO2[11] -- 44
) H- t1 [ W& J& s7 j; R // SPI1_SIMO------------ GPIO2[10] -- 431 a1 e- D# r4 z3 P2 S6 G
// SPI1_CS2 ------------ GPIO1[0] -- 17
+ U# e* }" ? G& E/ W. Q A( W" [ // SPI1_CS3 ------------ GPIO1[1] -- 18! J' J6 i' ~/ W
4 i, x- b S+ w3 G, K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
9 Y2 _5 k' d4 t, E, a- j r5 y; v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- [1 j3 j) X3 E$ F6 \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
0 l0 Q/ q, J! a' m$ i ?& ?8 c# f% O: ?3 m
//DRDY
% o( [8 |; w6 o2 _ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY7 Z1 ~5 u0 A6 G- V6 ^7 T
// CS2,CS3
7 l3 _/ d& [& j A& u0 p& c/ \, f5 j GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS24 Z6 v$ ~* x O' v& Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 a7 ?6 ~5 W9 t' Q% {3 w //SIMO [ x% `6 C+ _0 }
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 a3 o0 S! y a# ~9 y( b& r
//SOMI6 f7 v% q& U4 e: H
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 K' y, ^7 I6 d8 H* w* I" A8 G //CLK. O( h! K( B) W5 m1 r
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 x; j4 i5 x! \ T! `2 y- @6 u
3 ^: B, t) f( F // LDAC [! \. k' A7 r; W2 t# s
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, @' n2 K% w3 `. ~3 f A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN g6 B% Z. p5 R1 b, H2 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 _4 d4 d3 T% e7 {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
) m. Y) `" D3 @: d( b# x$ C" l GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ f: e/ y7 C, y' G4 W" Z4 Y, v2 |
}/ @/ ^# O1 a9 u1 v: i5 I
: B) X, k: [0 D+ q$ u0 Y
int main(void); U" Q6 X$ z8 x* m5 J$ q/ S8 i
{$ \5 \" q. q1 o" \
// 外设使能
2 [) A) |; i2 F PSCInit();( [! d( K8 U( k/ ?
$ m6 ?& {% o- J" H9 s0 P& G4 m
. z2 `" c1 y: T4 B$ T
// 管脚复用配置
# k& R5 a; K; S4 B% S7 k7 q; Z GPIOBankPinMuxSet(); w* v( z+ e! s* q
for(;;)
8 x& N1 `, g o/ h; O0 C {
/ Z5 w3 ?# ]& c+ e SET_SCLK();//时钟正常输出
/ U8 [! `1 b- { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' j ~# ~2 O! Y- j" }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% d- u# Z0 [$ g; d' i" w& { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 P+ E; S! D. P3 Z+ G3 n& I
" Q' s/ v' E1 _, G. F5 s) @ delay(20);
0 s" Q* |7 C, p# A: Y1 j CLR_SCLK();
, ]* Z- M5 J$ k$ r1 D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 A" O( q) y4 ^' g6 l, m5 V& u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3; S# a) X4 C+ C$ G; C6 o$ I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 J4 z5 d: s. t4 F5 m! k. ~
delay(20);
- i& P& B7 {/ k- Y }
- W+ M# [) ^ \# E- l}( g6 V5 @$ U ?
|
|