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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
* W. w3 p) K/ linput mcasp_ahclkx,
5 B3 F. E3 l( Z, S1 U3 c9 e- Ainput mcasp_aclkx,
# `! G8 i* N) I: S; p$ _input axr0,! ~9 w7 b9 ]3 z+ a
" Z3 i# ^- n  ^* z; }* K
output mcasp_afsr,
. h5 z) k* ]2 S2 I9 Ioutput mcasp_ahclkr,
* P" Z' j' }$ _4 J. youtput mcasp_aclkr,
8 O3 g+ |2 ?/ n& F! b% x3 _output axr1,
4 V  V9 }8 r& R- ~9 \
assign mcasp_afsr = mcasp_afsx;
3 ?/ G  t. T+ f$ iassign mcasp_aclkr = mcasp_aclkx;# O8 Q2 r" {: t( H* ?. S2 ^/ V
assign mcasp_ahclkr = mcasp_ahclkx;
+ W- ~5 s5 q) J1 zassign axr1 = axr0;

/ j: N% t0 k, h- d
7 q+ G; Y3 f* Q+ m6 t3 M/ O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, }: L# f6 W- Z. l0 A
static void McASPI2SConfigure(void). H' G$ y) m/ i4 E; W+ g' a! m7 H
{
5 a  I% T, e, p2 E' ?1 H4 n& GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
- L+ m3 u4 e# GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" M% x9 ~4 [6 ^7 _9 Z5 v+ D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, d% u( A1 {9 EMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- [6 D. \, K& e6 G  a
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 Y2 W; g# @/ D2 ?$ p& F. \MCASP_RX_MODE_DMA);* N) p6 u; f8 t5 E- t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 E+ p, y; t) N% kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ G. |; z1 p0 K- s, D* MMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
, c) u. o( `/ LMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 {% T. a1 ?7 |8 ^! ^" g
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 y* @4 I+ r4 R0 c  G1 @0 z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 c2 k& [# R7 X* t9 [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* ]) p9 ~0 D/ ^. t' `5 cMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" D& A5 }0 ~; z( t9 gMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; s5 l; b  [) ^% N4 w0 v
0x00, 0xFF);
/* configure the clock for transmitter *// C) [& X/ L' I4 V
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 L' F% N. \4 u$ V! `' ^3 L8 G5 {
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   W) U. S7 ~) w) X3 y1 `& r6 O
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( V0 x9 T) F, u
0x00, 0xFF);4 K0 d% B9 l4 b! |+ S8 x/ C  x
0 {: F# [" O  d% l
/* Enable synchronization of RX and TX sections */
! P% S0 p  |6 j) [: D9 j6 Q$ R! v* RMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ W" {6 d: r$ z
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  N! P4 Q8 B  W. d' _/ rMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( O/ J& z% q: L; N: C
** Set the serializers, Currently only one serializer is set as( d3 r3 Z& ?! E( v9 h  `3 N8 G7 x
** transmitter and one serializer as receiver.
' Y( H8 x- D1 l1 _! m' P*/
( [4 \7 w. S7 ]$ J, y/ {) D5 i6 B" uMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# K2 [# R; r5 A% l8 ^4 r5 l% GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ Q4 C; C/ H. R3 A! C
** Configure the McASP pins & j; S: u5 ]- s& _/ e7 g3 _# y
** Input - Frame Sync, Clock and Serializer Rx2 E% D0 B8 |: {9 u# P1 q0 L
** Output - Serializer Tx is connected to the input of the codec " i* \! E6 z; z: t
*/
$ n( k! @5 n( w" h* TMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 B4 E( N/ S, h+ P+ k
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. O1 w/ A" H% V6 X: q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 v4 E; I6 ~, N% @
| MCASP_PIN_ACLKX* ~' N: d0 Q% S# f7 ]7 Z8 ^" e
| MCASP_PIN_AHCLKX
! r* D  c9 v( z% u, H9 R% K" Y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( e7 ^8 G. V+ t, d1 a6 a, s) D( ~
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 |% w/ Z7 Z  N0 j/ S/ L" r| MCASP_TX_CLKFAIL 3 A* s: X! G$ ^3 q
| MCASP_TX_SYNCERROR, ]# E1 O) A* \( f
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 [. @/ E% D) D* D5 O% m% @4 L| MCASP_RX_CLKFAIL# H/ s! @4 [  ]8 i8 q
| MCASP_RX_SYNCERROR & W# ]% l" r  f3 O8 l! Z4 H
| MCASP_RX_OVERRUN);3 V2 m5 w6 q6 B" O
}
static void I2SDataTxRxActivate(void)
5 @4 ]5 ?( L# H{
5 O& n' r% R1 F8 I+ _/* Start the clocks */7 W$ F" S7 j2 q$ V( g
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% r4 w9 h# s. V
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 y% @' y% e0 D) REDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. |3 C5 {. g" K+ y
EDMA3_TRIG_MODE_EVENT);
7 ?7 p0 g. L. h% g6 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 n2 ^7 `, K9 C) z' |1 uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */3 E( n  {4 \# W1 ]1 |) I1 s
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% `6 U0 ?# k5 P  oMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 U  V( V( Z/ h5 V4 R0 k3 G
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, C4 M4 O  N0 p2 a5 {
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 \1 z! }6 J9 R9 W) G+ p/ WMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 Z5 x6 b% T* _1 U% S8 [
}

5 t  t& n* i. }$ r+ a7 p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! D; d* n' x; Y& _; q* v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-26 17:02 , Processed in 0.042689 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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