|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 z) Y# J i% x% B) B2 p
void PSCInit(void)
0 d: F' \: ~% t, ?; N2 A4 V{
4 T- N% G4 F3 f! H$ t PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}1 Q6 m! x1 v/ j}0 C3 D* S6 X/ i9 @! v
4 [( C. |( o J: G" e. P
void GPIOBankPinMuxSet(void)
0 U/ P1 G2 ?& \- I1 j/ z{- b% T+ e2 x# ?4 O/ [* B
// DRDY ------------ GPIO6[14] -- 111
7 Q _# ^! E0 J9 | // SPI1_CLK ------------ GPIO2[13] -- 46
- @0 \' G5 ~2 o) f# O) v // SPI1_SOMI------------ GPIO2[11] -- 44
+ {# J8 K/ }; k2 s // SPI1_SIMO------------ GPIO2[10] -- 43
" S+ D z+ T! h0 e: C1 {7 C // SPI1_CS2 ------------ GPIO1[0] -- 17
! T' X$ a% t+ f; G) G8 t // SPI1_CS3 ------------ GPIO1[1] -- 18
( Q" S0 e8 I. i2 c$ X. \ X5 @2 I; I) G8 M% ]( t0 V. d K
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ p% D i) U1 C) M. D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# J) L H- x& t$ ?+ W! _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- U6 S' o+ I' O. T% _- q- ?) _2 x' W, s: t' g* A0 Q
//DRDY
/ E, x- W( j% `! z9 Z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY S( j. P6 G$ i0 V
// CS2,CS3
; z0 \- n" z4 G- ?6 @9 k GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# c& g% M0 C! }3 Y% u7 i1 i+ A$ E; T GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 u$ |/ h7 B7 R) D' t //SIMO
; v- p* z, c) v, H GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO) k. R8 Y% H0 Y9 b
//SOMI e, ]8 q O [) G% I
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 c- z4 \1 r! W( m; ?
//CLK
# [" w. J7 c+ x2 j b GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK5 p# e3 k6 g0 k, { ?- z$ v S
; E- O* j, Q0 E0 X' M
// LDAC
/ ]( G8 F! @' }) h, z7 q- R GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
/ F z+ X# f# a" o" y5 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 t- t3 [6 F5 O' ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 e- E/ D+ L" d2 J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 D8 W0 F3 t7 J GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 I+ R& j! g. D$ K% ?: m}
: |; O4 h- C5 o, k$ \$ b1 B# A0 L9 X- I) c: O
int main(void)( C7 I2 R7 v- I' [5 T/ S. t
{
6 \% t$ M2 E" R5 n1 _! P+ M9 q9 L u // 外设使能+ \- v% }* x E9 \0 H2 e/ P
PSCInit();
3 ^! ]: ?2 @- u* ~0 F7 F A
) x/ F5 g4 m" x" M - ~2 {' Q; p( g) t6 m( m
// 管脚复用配置, H3 z) G0 y- j: v' Y- v. o( b
GPIOBankPinMuxSet();
) A+ m: D: ]. L5 r2 O7 x5 E, q for(;;)
$ q4 D0 X- `" n3 r4 ~8 _; A {2 s% v; q- ^; e6 Z
SET_SCLK();//时钟正常输出
/ [' T2 z1 L. V- Z6 ~; N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( }2 Z9 s: @* [" X9 y" Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
6 ?- c# N4 n4 y& B) S8 v0 s2 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" C# t. ]5 b& }# q- _7 F8 l, E$ a o
# m, d& j G" {; b# [1 V delay(20);
i8 i2 q. ^7 [+ k CLR_SCLK();
+ R9 M1 Z9 V& v9 G% j8 x# U9 d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; t9 h% l6 ^, Z! R: Z9 e7 h$ C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* r. \- n) c( |. r% b% h" ^7 J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- T" c- u; A! U/ U/ U8 ~8 B
delay(20);
s3 z* _( P+ { }
+ b( o/ O3 v/ ^ z" J7 W! w9 z8 O}
7 W& ^6 y0 S* y$ F( i+ p |
|