嵌入式开发者社区
标题:
TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
[打印本页]
作者:
lmxcyx
时间:
2015-5-23 19:02
标题:
TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
使用下面的例子代码,不能使SIMO和CS为低电平:
$ ~* ?$ i2 F- f2 c" H( H
void PSCInit(void)
) k/ ?$ P5 C8 Q( @
{
+ d- W+ ~) s+ B* m( ]7 X4 Q2 x
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
: ]* N1 y1 `" a. g* H J0 m6 e. j
}
; n( \' |. A5 i4 B1 V2 b; U. S7 q
% r% d! \, m; \& _. j, x$ n Y& j
void GPIOBankPinMuxSet(void)
# E& m4 O& D* k& X1 w( M
{
- F7 U) K- ~( e1 e# W
// DRDY ------------ GPIO6[14] -- 111
1 a3 R0 O' W, n# C* [3 W
// SPI1_CLK ------------ GPIO2[13] -- 46
. a! Q) b6 |+ {0 {8 u; j: H
// SPI1_SOMI------------ GPIO2[11] -- 44
9 j% E6 }1 F' R
// SPI1_SIMO------------ GPIO2[10] -- 43
7 t# Z# I( `# t/ \
// SPI1_CS2 ------------ GPIO1[0] -- 17
* K! y2 W: m- Y
// SPI1_CS3 ------------ GPIO1[1] -- 18
6 t7 s6 A. Q& ?! S8 y
' N, i$ S% [% Y! N" O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 h f3 d0 @ d$ Q9 A& l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) z# z* l2 O9 y$ @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ t1 R8 Z9 F% P4 e# Z
" e& \2 a* K2 F9 C# U
//DRDY
* n, p$ ?: f* @" B0 J: _! J+ t4 x
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, o4 h% z. M. z% a) W
// CS2,CS3
6 y [ j/ p0 G2 ?8 k! b; K# V
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
2 p# W( }3 I+ {) F1 y7 k; q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ f4 d& e2 B. e. H8 f
//SIMO
0 w# U; ^2 o& w; r0 E) g( T2 C5 C
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
& E( U! p& u2 W# P$ f- N1 Y
//SOMI
# V, q/ [6 L7 x. s M* y, }* L
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 q" n/ X! e3 k4 ?# n$ W8 }$ F
//CLK
; s2 r& [3 P }: G: ^# r
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- D0 U* @! ^" A5 Q9 C Y4 u
& g% Z. {' P5 p3 F9 i3 Q; H
// LDAC
) W% F k: p8 S$ V
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! P" P: B- G1 V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 h3 d8 e' a" O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 F6 h+ @ e" x' z; Z7 g: i3 \6 u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
4 w5 w- e, R7 ]; e2 a/ C' R
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; p0 |% T; H6 L- M/ L
}
1 B5 O$ r1 I# c- i0 w* _2 F
N/ j9 m+ }% j0 ^) J G# |
int main(void)
4 y5 h. p; U e m
{
2 Y5 d/ n% [; w- P6 v! u1 Q
// 外设使能
* q' Q( s! W- D$ `2 I f
PSCInit();
: U6 o8 i1 K5 C& k
/ T, F" A$ e. ^
1 I% K' f# j" [7 H
// 管脚复用配置
' W2 }9 z) b: S0 j5 R4 B: E
GPIOBankPinMuxSet();
, C4 J7 I& k2 a* E( W3 p( a
for(;;)
! `/ `+ O [7 q# K3 E
{
4 l% O0 d3 x7 N: N& I& H- f; I) T3 t
SET_SCLK();//时钟正常输出
6 R7 B1 E) v& S2 e7 p# {+ w; r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& _3 j$ N+ `5 t, E' J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 y: m4 `! x' w* Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
* i( F2 }" p* j2 T( X: s F+ Q
, E& d( R+ Z1 ~% P& Y' O
delay(20);
( p1 }$ b2 I; _% F0 p
CLR_SCLK();
, |" c: A) [' Q# G0 v" i( g! S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ U2 s5 a$ C7 d u5 ^: h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ E( j* x4 Q! B W4 E
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; J2 ~' B! k- `6 O% {
delay(20);
/ J. T. Y( E2 ^7 G; M: i
}
3 b0 k5 T. E9 G; e! m6 S
}
) G) s/ o& i2 u2 Q! r1 @- A
作者:
Lewis
时间:
2015-5-25 14:26
这个GPIO的配置是没有问题的,在主函数里并没有使CS2拉低,其他的没有问题的
8 q# k# u4 E. F x _+ Q+ o6 e$ B
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4