|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. D4 f, X9 ]/ pvoid PSCInit(void)2 O& e* q& g* Y) k5 r
{
4 V) e S/ L& B' z2 Z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
5 F' w9 u# v3 K: R}( C# F* L L" O1 l7 `) `
" a3 m* e- }2 ?8 B8 h* ?
void GPIOBankPinMuxSet(void)
9 K0 |: B& P$ Y/ N{
+ `+ q# z$ n2 s7 \9 r // DRDY ------------ GPIO6[14] -- 111 j& G8 I+ b- M I, `0 E
// SPI1_CLK ------------ GPIO2[13] -- 46
$ u+ L1 j H2 t# a0 i // SPI1_SOMI------------ GPIO2[11] -- 44
1 M1 ]! X- t2 l8 J // SPI1_SIMO------------ GPIO2[10] -- 43: p3 _0 t& @, b9 ]! h
// SPI1_CS2 ------------ GPIO1[0] -- 17
2 v% ^) r- Z+ p5 d( [ // SPI1_CS3 ------------ GPIO1[1] -- 18
* r* P5 O) P3 n9 F) b t; p* K$ M1 D: ? |% `' c$ S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
0 C1 r) H3 Z( g0 H8 q3 m O/ B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& d# x4 @8 k4 t0 s3 ~# V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 d. G$ \; p& V7 q* q4 V l) O% ]" H4 Z
//DRDY
3 \) a# |& Q% E2 R( O; D5 @ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# U6 n, ?. N* _3 s* _' R1 q
// CS2,CS3
* ?) @; j; L( m GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
$ c% k" @7 d4 d8 {" d! Z- Z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 Q! K* D( d% g" @
//SIMO
5 F! ?4 r( |- y+ {: z# N& n GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
7 H3 u+ z9 H k& i# N: w: p0 o //SOMI$ P: c: w+ E8 h+ B& v2 \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 y1 G3 C; d# r9 ]& T h/ y3 @" G7 ~ //CLK/ ?, @; |8 [+ T) N) K$ e
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK+ c7 e; }$ i) N8 n) l: a" O
1 z5 y+ u7 o) m7 h' _9 l+ Z( H" i6 [
// LDAC
0 _) r! b, ?+ s6 } GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 i: U+ o4 _# |& [0 K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 P( V4 @; b r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) f5 M+ M$ }* E, y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. Q9 O8 T1 V7 H+ D GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ Y+ c) L: a! A1 J) }
}
6 g v3 z2 q2 Z5 b* x
2 Q J* N# a% c' s# C( Q% S# n/ hint main(void)
9 T" J; V- r( ]) \3 P6 V{
+ U# @- o7 E8 A- S6 e // 外设使能
7 S6 S# ^7 h9 y6 |: e0 g! k PSCInit();
$ L. a0 Y4 h# i5 Y; L2 j3 {+ {/ @+ K! V
* @ z: ]; W; \, e b* t // 管脚复用配置
" d) h+ F- e+ x- ~4 `5 P2 n GPIOBankPinMuxSet();
4 b/ n: H! R9 |6 J for(;;)5 G5 F& g* H, l/ D. [8 t
{; \; G9 b+ A, z) T1 Y! f0 y; D3 f
SET_SCLK();//时钟正常输出8 v6 D- y8 v4 }9 L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( G% q h/ n' i GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, W8 C% a# D" x* ~4 W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' q& x/ f, |; g$ t1 V
# g$ Z: E, @$ n+ g5 R6 \' R delay(20);$ M5 B$ t; ?5 o% u
CLR_SCLK();
3 G& v+ G! C1 ^8 n7 d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
- @; I0 o; X* O0 `; Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 v& @4 E4 D% x& F. ]; l9 H5 [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) a3 a! Y2 k& s j, p6 E delay(20);
, Z0 g J1 e$ Q1 G2 Y }
. |) O4 v" }: p* e) _}
% {# b- T. b7 ^ l8 l4 j: ]5 q |
|