|
使用下面的例子代码,不能使SIMO和CS为低电平:5 K" S |8 k9 l) _
void PSCInit(void)8 ~) q! `2 R* M3 o1 _
{
2 q, d4 }6 b! f: k4 | PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
5 i# T7 w' `9 V5 g" E3 |( }}
$ Z8 q% ]4 D# h# G
9 T, L. N1 ~* @8 P5 r( |void GPIOBankPinMuxSet(void)
4 j! @3 D% O5 F: T1 v% l{( z" Y/ S" [: Y/ c- r: Q+ W
// DRDY ------------ GPIO6[14] -- 111
3 L) }5 R( N& k+ u6 W; K // SPI1_CLK ------------ GPIO2[13] -- 46
) w% D9 V% u3 @$ t& n0 n$ v0 F // SPI1_SOMI------------ GPIO2[11] -- 44# ?4 e6 a! [- F# n2 j5 `
// SPI1_SIMO------------ GPIO2[10] -- 43; F6 _; k ^/ u0 }" C6 N, o$ N- V" t
// SPI1_CS2 ------------ GPIO1[0] -- 17
0 c: q6 F, P6 D/ W // SPI1_CS3 ------------ GPIO1[1] -- 18/ L! m$ ~) p; |: t0 p' s
1 F% [( X' C) Y9 Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);% J' O* Z: B" |, {# `; |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( }! ]+ l& i1 {+ Q) T6 J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& J8 K+ Q7 h& d3 \- Z5 o @. N) f8 z8 c# ?, H; e* c
//DRDY1 r/ s- f- t: d2 Q/ s, A) a9 x
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& @3 d( N7 \( a: d& a3 Y, P // CS2,CS3/ H `6 W5 [8 Z6 Q) p s6 t
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS25 T; _, N/ k' ?1 V5 o6 I$ ^4 j
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 p; b* ] `4 ?! c/ Y! t$ k: q
//SIMO" }9 j3 c9 e- L/ k2 w6 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 s. u. n- H! w0 I8 ^/ Y1 [ //SOMI
6 G J4 ?3 n: c9 @! X GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI P1 w# J" D3 Z
//CLK
: Y8 v& }* V- C0 l GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
% o3 c$ L+ I* y: g7 d" v
( i4 N! |$ y! n" { z // LDAC
$ V1 I$ S/ p# V7 C0 | GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
& q% l+ V' J0 I6 V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 h4 ?4 j+ G4 {3 _" S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. X$ Z; m8 q3 s6 o" S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) j8 g1 X; P7 y. N+ c: n
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 g; W* o8 d2 T# k0 p% |
}
4 [9 [( @: q" w7 t5 L
t3 H& V+ e' G. {9 N+ V/ Uint main(void)$ s) N0 ~% x& A0 _- l: B7 I- {
{2 X1 t& |) v2 k0 I* K# F
// 外设使能# a. C0 \+ V3 |3 N
PSCInit();- Z; A V( o* G! C) _3 }
" ^. t8 p2 N1 Z9 \ ! Q9 _% C; c. l3 O, K
// 管脚复用配置* ?! N6 \) O5 H: E& U
GPIOBankPinMuxSet();* e& B* T3 m# e" d1 I
for(;;); f* L F& d7 V; Q
{
5 @* z* w7 H/ W2 d0 A SET_SCLK();//时钟正常输出
& z) o8 Y4 K$ { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ S% M, E% ^8 s9 X U- X- M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 v# q1 C" A x, K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 B) r( [5 i" o9 Z2 o2 }
4 h5 a* j+ o, [$ ]) s0 ~3 I& a delay(20);. I/ V, B- ^4 Z3 F1 c/ {1 ?1 Y. `
CLR_SCLK();
9 r' Y0 j+ S' m) |; J% ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 ?3 k# Y, n0 \. }& A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 L- b, e$ t+ D. L+ B3 O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! A1 A3 ^; Q; M" s W delay(20);
8 k9 w+ \ F0 b, D" ]" J( V$ ~ }/ [: X& T+ ^; G8 M0 o
}
9 ]6 e5 v. y L8 \1 U# X+ `$ E |
|