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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* n' D3 s0 X  a$ K: D; f
input mcasp_ahclkx,
: \5 O3 d1 [8 ]3 @+ [input mcasp_aclkx,% ~; n& M$ Z8 s7 e) ~( p
input axr0,
4 V' l) D1 _, n% @8 y
. F2 w, d. P9 ~output mcasp_afsr,; C$ ]! p) H8 [3 d" x& _9 m: O( C
output mcasp_ahclkr,
- R* k7 V: a* q! ?9 Doutput mcasp_aclkr,
2 ?: w7 Z/ Z3 i% X9 A* Youtput axr1,. n" o! a5 G0 O* ^# A; R* p  t
assign mcasp_afsr = mcasp_afsx;/ f: C" e9 ]% r* p# s% O" k
assign mcasp_aclkr = mcasp_aclkx;/ d, y; p! T- u1 S* _7 t6 j
assign mcasp_ahclkr = mcasp_ahclkx;: ^- V* p6 X1 t# Z" X
assign axr1 = axr0;

/ L7 s. s2 d/ S- P  P
2 e* P3 X: W. p! Q. ^" \; Y; w- O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ O% X. v4 Q* U+ M1 ?% F
static void McASPI2SConfigure(void)
0 y4 A: d# `* }{
2 c# q5 x5 R) w, ^6 n7 e6 O. a6 xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 K+ g& s2 l9 r. `; Y- eMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 F. F0 H4 l1 p; R+ U' f6 `$ \* T% dMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);# f1 P  h( r8 D+ y% |. y- \3 J: {
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& t3 R9 i9 Z# l+ O7 O8 ]! }McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- b! ~8 n( F& E+ ^6 dMCASP_RX_MODE_DMA);
4 r! A( v, L. `) A4 B6 IMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: c/ G  C$ A  h( O
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. Y) S8 @+ Y0 h4 i+ W: T6 l
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) d2 [  ^; @, V3 B5 a/ i4 r
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- U& f7 A) j* U0 n4 x& s
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- f8 j, S0 A, FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
* z, K0 c$ n. l9 [McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 {* a% n. X" d1 RMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 y; k* h4 P2 k
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ }; W  ~0 ]$ y, r% H/ n0x00, 0xFF);
/* configure the clock for transmitter */( a+ q0 h7 D% S
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' k. Q$ ^  x0 L! \' F% AMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! j3 R" x0 o5 F: a" ~1 z" ~McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 d( J' x/ B, P! b1 O
0x00, 0xFF);
0 j+ A* j; m* \- g
% k; Z: p7 r  n7 H; u" d. C7 l( M/* Enable synchronization of RX and TX sections */ ; q9 B2 t, p% |  C0 e# }# I3 M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& |5 M" U0 Z6 T6 z* [
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 ?$ q% x. Y9 A0 L8 y( Q- qMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ W! W6 N/ |& N- S
** Set the serializers, Currently only one serializer is set as  T9 [6 f$ W" P5 W3 s/ O
** transmitter and one serializer as receiver.; H3 W3 U+ S0 P" k" @
*/* U7 i2 A1 {) A- N
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  G2 g+ G- S, D- z2 T0 Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ o/ X4 r) J* T1 B" Q8 ~! }. F" n** Configure the McASP pins
; h; Z* U  N5 Q9 c** Input - Frame Sync, Clock and Serializer Rx% g3 R/ ?2 t# ^8 T: G/ b
** Output - Serializer Tx is connected to the input of the codec 9 [8 |) l# |$ x& I0 g( ~8 S0 z0 g
*/1 P6 b& u2 M8 Y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ d! C% T; s/ e0 q. ^& T# [
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% U/ E  O: N& E* I* N4 zMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 A" p1 u4 Y  }9 D% R7 W| MCASP_PIN_ACLKX
1 p. ]! J7 E3 a/ Y; z7 P| MCASP_PIN_AHCLKX
: o8 [- l3 w0 q9 y+ L- d& q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, c" d; p) k, o+ d! K& ~' ]
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # i0 v* P" ]: |* w% T$ _
| MCASP_TX_CLKFAIL ( |$ u+ Q& N* P; Y. `# ]
| MCASP_TX_SYNCERROR
* d9 X- A1 a' M9 N, j* `' w6 z| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
! r7 c& P$ v; I| MCASP_RX_CLKFAIL
$ r$ L7 x4 Q5 J, v2 o| MCASP_RX_SYNCERROR ) \4 h' a3 c8 |6 a
| MCASP_RX_OVERRUN);" u- U( \$ r% k' U. m
}
static void I2SDataTxRxActivate(void)
" w. s+ y4 c7 B4 M% Q6 Z{
) [' @( Q6 [4 Y3 K/* Start the clocks */8 Q9 a7 W( f2 x# H/ _+ F( \$ e
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, e# Y% R4 a$ n1 p$ k7 [
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */% `  |, s" q$ x+ Y/ T+ L, M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) J' G% _* {# K8 ^- X" R$ D
EDMA3_TRIG_MODE_EVENT);  I1 x+ `  H6 v$ u' m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 L1 W  ?9 j# @3 Q8 p  FEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# E  j& [/ N* N* @
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* _* z9 i& L7 Y  |; A! H+ h9 E
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 h/ K6 H+ N/ a4 I$ Q* qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# a3 L2 V. `1 e! L2 u8 z( B* w
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ E* Z" D, X6 j' A1 t5 V
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- x5 x/ z$ U! ~$ |
}

$ }- i, [* j5 u' C' z; r
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" W! \9 f- A. i+ T8 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 11:02 , Processed in 0.037767 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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