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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11660|回复: 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,
! e# H0 f* Q5 t; x* `4 A. [input mcasp_ahclkx,
0 {4 [; Q) l+ g/ u+ Yinput mcasp_aclkx," S8 I2 }0 [3 Z% N; P/ {1 M  y( ^2 y" x
input axr0,
7 w3 V/ b' t& @( P/ b# m- a) x, Q4 Y
output mcasp_afsr,
9 U( R1 f7 g8 M1 Xoutput mcasp_ahclkr,
, S5 Q2 a- B# a( W" {  ?) s$ O" g( Youtput mcasp_aclkr,* x, @2 {" Z/ q( F  J- h& O5 R9 a
output axr1,% _$ v1 \1 Q7 N+ B2 P
assign mcasp_afsr = mcasp_afsx;  c1 w0 H; W* e
assign mcasp_aclkr = mcasp_aclkx;% [! M. d0 F' q9 B+ {0 j2 [
assign mcasp_ahclkr = mcasp_ahclkx;
/ h, B- I: c1 J) c# t5 T  h0 O$ fassign axr1 = axr0;
# ?* ~" P8 p) P7 B: Y# q# k2 f
8 `& f9 o, o+ N6 W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% q" X# _7 ]# C# }* G
static void McASPI2SConfigure(void)5 u+ q1 b5 X7 }4 P9 o
{
* s, v, o6 K- pMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ ]9 Z0 N9 A% B. B$ k' tMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 W" R: t  K7 s3 y  I1 P3 kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* U, z. \- X3 I8 q1 x$ h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! u  G1 b+ p  h- o8 WMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," l; O# v! a. s$ X' A- f
MCASP_RX_MODE_DMA);7 j; v1 M" t! j( \0 m  a  S
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 b% E: O! `8 P7 M- i. A& O) e
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 a3 a  V+ L* z* F! H/ RMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 G# V5 Q$ L3 T  p% o) HMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
, S$ A& I) s# M% w6 ZMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , B) X, l: _$ ?' O+ m- ~
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
8 Q  M3 m: A& P2 A, _! xMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& m( r  M5 D6 S; U* |. W
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ R1 Y( t/ [* bMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% ~' v" M; o' ^; T& o6 Q0x00, 0xFF);
/* configure the clock for transmitter */
$ B: u# B: p+ D$ j1 BMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 R; `6 P7 c5 v: f' G. B
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 _& z, V, m7 ]) l' zMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! p  R3 J9 j  c8 d* P# `. q0x00, 0xFF);
4 ~3 f$ y- h1 F7 i
6 J! N1 U  n+ n' n/* Enable synchronization of RX and TX sections */
7 V, Z2 n2 E/ J) t& ^McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; h( `/ ?# P9 F' Q% P8 R# g
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 d7 `! x3 v* [8 O( y8 g. g, W
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" h7 T2 k1 U( c5 n. `7 O* x" W
** Set the serializers, Currently only one serializer is set as4 w4 A, @9 g$ c$ o! d0 m
** transmitter and one serializer as receiver.% x; I# C- X8 n! n8 s# r* `0 p
*/  Q3 t5 P# R; R7 W3 o% c
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 Y* u# Y/ a* p9 H: z  o
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 l& u; X9 y" Q** Configure the McASP pins 1 P6 X. F  ~: R) c
** Input - Frame Sync, Clock and Serializer Rx
5 r  h: S2 c$ q; t** Output - Serializer Tx is connected to the input of the codec ! n7 A8 M5 l% r* k. ^
*/* B. \) X( u' D
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ |% P- U) C# Y: cMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
3 u' q* E% x9 W0 V* r3 O+ OMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& X0 T' b! S# o, i" s( v| MCASP_PIN_ACLKX8 J, P' S" m7 Z% g3 N, u
| MCASP_PIN_AHCLKX
# d5 V' H/ C; {) {% ^4 P$ y' z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ W: n) ^) Y) v: _+ t$ E' T1 q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# }9 l& b1 \; y" ~: B+ o| MCASP_TX_CLKFAIL ! H- l6 p$ }' V) b3 c4 _
| MCASP_TX_SYNCERROR/ B% l2 U8 C2 k# F, s& ~. l3 i
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* F- ]7 q; K4 G! _| MCASP_RX_CLKFAIL
1 ?' l6 w( X; U  F  `| MCASP_RX_SYNCERROR
* F) t' y  j8 r: y( w) `6 U; K- N' l| MCASP_RX_OVERRUN);
4 n7 F/ c4 |! U0 p( |8 f/ k7 K}
static void I2SDataTxRxActivate(void)
4 r, T: n  Z5 D* I  |2 t{
3 x* F$ ^5 c! W/ @1 X" Z/* Start the clocks */0 u' n7 |/ b; p# O4 W6 L
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' K/ U8 x: T0 D" _/ ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& g6 A* _4 S/ I: VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* h: o9 J3 o4 r( SEDMA3_TRIG_MODE_EVENT);
/ W1 S$ ~7 b% B# rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! s0 Y9 T7 @, j& c5 HEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */1 c0 x, r% l: s* g' C4 Z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: I/ o3 }  ]9 U; p) `
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 w& V: Z' }) R# Y& a/ f- s
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' Q+ a1 ^! u7 x& HMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
+ O: C" ^7 V* o& r) uMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 B& L0 w* A: R8 p
}
+ q( u$ O' ]- c$ H
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* e# x; b- q' y! C9 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 04:51 , Processed in 0.048904 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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