MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12423|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,4 {0 x5 G* O! W$ y7 v
input mcasp_ahclkx,  P3 Q8 J% l8 U5 R
input mcasp_aclkx,  x, m/ m  J8 `
input axr0,8 v7 e  G5 K) M# d* E

) R  v% v' X* U( F! Routput mcasp_afsr,
4 R" p3 n, ^* L& b6 ]output mcasp_ahclkr,
0 t8 Z; N; E1 H! s0 C' ~output mcasp_aclkr,  y% d2 s  T: I5 H4 B6 j" q
output axr1,
4 u* F5 j% Y& R& q* m* }) A
assign mcasp_afsr = mcasp_afsx;
9 B3 C" w& Y. ^assign mcasp_aclkr = mcasp_aclkx;) Y; i" l' a. X$ z, E% H1 h6 a
assign mcasp_ahclkr = mcasp_ahclkx;( U. N6 Y' _4 ]" ]. H# O* V/ y8 l
assign axr1 = axr0;
) b. h+ h) d$ M& Y- \; u
0 b0 Q& f9 L. R! H, B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 `6 _) r& s2 S' g, r3 ?3 s
static void McASPI2SConfigure(void): K( x. u: ^) V& \1 y/ ^( E
{8 [( _7 C: f) L, Z9 b3 z; m4 V
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 c/ \: v' j5 m& [( u) o: KMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* W( ~- ], \4 t% t4 c
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
3 n" ^) q2 K; Y; kMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. c+ h1 l: e. W. V& \, T2 C
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% _: L# e7 _4 H" I$ A6 VMCASP_RX_MODE_DMA);) D4 {2 L3 Z' r0 H
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 t1 X& q' f/ H5 a6 ^3 K2 x
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
3 C; S0 X9 k0 n# h* Z. RMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 K- N2 r. S' t$ p
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ ^/ d  s% q9 [7 g" k& n7 S; }& c( W
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 Y. K$ w- t5 V5 O" [& K/ R' ?MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- H# @2 o7 @5 ~9 P7 A7 [. W, uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ ^! h- z3 k" }* Q
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & k$ Q, x7 p* L9 b
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( _9 H4 L, @- E1 x/ N' A. F0x00, 0xFF);
/* configure the clock for transmitter */$ i6 Y+ c4 o1 Z# ^) g
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" O  h! U0 Z# F! H: @* H7 {3 M
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 {# ~! I  G' p- ~" dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 s' ^3 j  H) Y0x00, 0xFF);
+ A7 ?2 T. H' P0 o  T
2 m  f: C5 b6 b5 t* I2 o* l9 `/* Enable synchronization of RX and TX sections */
! E: B8 F( V- Y. _/ n  c/ UMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ d3 g, y  `4 R0 L& J; dMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 ~; K, G- c, n7 h" l7 p" H. @
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" L0 Z2 N5 q0 N0 D  h; c
** Set the serializers, Currently only one serializer is set as
5 V% n+ l+ E4 E5 Z** transmitter and one serializer as receiver.3 d% [. }( U: a3 d- x: w& ^
*/
( y# k2 {$ w+ b: a2 AMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 h9 @' \% M3 s2 E2 GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 [; R+ |; }, L
** Configure the McASP pins
1 F4 ~: d9 P8 c( B( H** Input - Frame Sync, Clock and Serializer Rx
) W% T( s9 v/ e& \" {7 ?** Output - Serializer Tx is connected to the input of the codec
3 l3 g! b3 t5 ~* Z*/
# h9 f! y% X# K* D: _% q9 Z8 tMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);# V+ w8 e1 @, l( H
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 g7 Q; T+ X2 X2 K: e" p
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* j5 d/ R: Z* ^1 b7 ~  F
| MCASP_PIN_ACLKX: _1 V! P4 R. f! m) ?
| MCASP_PIN_AHCLKX
' B$ C' f! S/ l9 L- {3 t" u| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ S2 i# N. c( u+ h6 h% p. u. l. tMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; S1 r: X+ L5 F" Z; ~; V4 y# ~! V| MCASP_TX_CLKFAIL 4 z* }# t) F. r0 R# Z) f
| MCASP_TX_SYNCERROR( J! C4 g" Z. ^- ~" m' U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* p# w0 H* k$ w+ G0 j. a| MCASP_RX_CLKFAIL
2 Q; _8 _) \; g: L4 |2 [* q| MCASP_RX_SYNCERROR ' C; ?* W1 W2 T; {
| MCASP_RX_OVERRUN);
. A0 B7 t9 I% P3 B, V}
static void I2SDataTxRxActivate(void)
) K0 I6 S% o; b{" O6 s9 {; n6 {4 d" i' e  j9 j8 J  P
/* Start the clocks */2 F6 h' L* I$ n0 Q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);. L6 `) S6 `6 p2 s
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) R& J! H; w5 y5 O, e3 |
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 a( J2 H" b) S# N# m- m7 ]7 `
EDMA3_TRIG_MODE_EVENT);
6 A0 r" P. a, v  z% v8 o% rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / N; m, W0 K' i6 K7 g* j1 s
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// W/ I# t$ [) R* x/ k  I
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 _7 }% T; R3 }; d; u+ l3 }
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 l5 q% Y8 w1 |0 _6 rwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# w+ u7 U- `0 u2 z# R8 P
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! t! T8 N$ R# {  K# ?McASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 ?( q  X1 k3 v5 S" y- ?
}

7 }0 d/ q- ]3 H2 {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
: P1 e$ f, Q" }6 X5 l7 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-4-8 16:13 , Processed in 0.040172 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表