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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13562|回复: 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,% U$ Q( w( n; t5 Q6 U+ T7 Y7 a+ y
input mcasp_ahclkx,$ v# h& J. }3 O& @
input mcasp_aclkx,
5 u/ r: I3 _. X2 n8 Einput axr0,
2 Y4 g7 {, J$ E1 h" k* |# c# p( f1 _; Q
output mcasp_afsr,* j% Z- V  L8 _+ j
output mcasp_ahclkr,3 C/ C( a  b( X8 J. P
output mcasp_aclkr,
5 P6 d4 J( O2 i! z7 [8 H- O* youtput axr1,7 D# A& l9 e$ I. E( Q' r* q) _6 {
assign mcasp_afsr = mcasp_afsx;6 ?) X& r+ v+ _6 q& i
assign mcasp_aclkr = mcasp_aclkx;/ V: i' v1 h1 M7 W9 M" b
assign mcasp_ahclkr = mcasp_ahclkx;% |* |. d; h3 {4 K
assign axr1 = axr0;

7 z5 q0 C5 t+ J* t) j' K5 h
- O! r- X3 R; G; [8 u8 K+ G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, r) r. l5 f' J
static void McASPI2SConfigure(void)
5 B" Y3 Y( X$ e1 u' {/ F{* `0 P) E- a7 h) U. K: u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 A' i4 v% y/ B7 O5 T6 X# TMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 c' l/ w; T: q9 v" DMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 e* ^" e6 t, `1 m/ ZMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// M" V, t4 X3 J7 ~
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* V, g5 T9 u! O/ @8 g
MCASP_RX_MODE_DMA);' h* z7 a9 F* i! s8 g' d  Y9 D& {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) H, R8 h. L* O5 uMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 Y* S% Q" k/ I7 c% l, H- a" X. N  ?
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 {8 p1 A7 [2 F% DMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 _- s8 r" O1 p/ M" F0 ]McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 \/ H' E4 Z: Y/ ]  `; ]MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
$ a3 n( C$ K) IMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 Z- [# H6 J7 t: V4 L" a$ J# \7 b) U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 t4 F* z# q1 n9 x% `McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% h$ Z$ E  l0 r1 ]) @0x00, 0xFF);
/* configure the clock for transmitter */* L2 T+ \# Z: W7 |! D( J3 h1 M
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ B: N! Z' N: M4 Y
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 J6 b' M8 n: H  [9 DMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& [2 i( R; y  _6 f0x00, 0xFF);
4 \# a7 i9 O7 I+ s) O
' i! Z- t2 p: s3 O& {' @. A3 w$ z/* Enable synchronization of RX and TX sections */ 0 U5 u$ d1 }7 _, W( M* |3 r
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) \5 d, C' {2 _, c
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  P9 @  y; l* L8 Z# v* s  g1 vMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 ^. L5 ?  D' l9 \" D. K** Set the serializers, Currently only one serializer is set as
; Q- O2 G/ Y! I** transmitter and one serializer as receiver.
7 E! v0 {/ X# p9 |*/9 l! p) C7 ^  b  x; b. b' k
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 H. `2 E% }" ?7 p/ N) Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
4 }4 v7 R* E  u7 w: d& A, Y** Configure the McASP pins
2 `5 B7 h" F9 z9 `0 C** Input - Frame Sync, Clock and Serializer Rx$ M4 y* g6 x' v$ B
** Output - Serializer Tx is connected to the input of the codec ! q) _' @" h4 V3 I3 l+ ?
*/
- l: ~4 I" R& B$ q0 C, hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' D0 d7 t. y6 ~+ z2 Q) b& W! ]; }McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, W" V& H& e8 d! _" G& WMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 t# Z5 V  p- U. }' ?7 q* n4 J+ K| MCASP_PIN_ACLKX
( ?8 f1 t* F8 L+ z# j0 @) z$ H  A| MCASP_PIN_AHCLKX
5 }5 j3 g8 z% J0 H4 {8 x4 ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
2 j) H$ h$ b1 n% N$ u$ h( N/ {McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 g9 f: t) Z  l, o| MCASP_TX_CLKFAIL
0 i  J5 o' M! C; `9 @$ Q| MCASP_TX_SYNCERROR
& ^* V+ W% k" y* d. b+ M" I| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 6 y# l2 s( |% u9 G% r& R
| MCASP_RX_CLKFAIL
1 ^4 k! @! R+ [% q8 d; H" a# G* }| MCASP_RX_SYNCERROR 2 J$ F* q& w/ K/ {: g: ]# H. Q
| MCASP_RX_OVERRUN);) o- a1 F) ^# a5 O
}
static void I2SDataTxRxActivate(void)! v( ~1 \5 P" t& I7 l2 A2 p
{
$ H5 ^/ w% L: l/ l) ?/* Start the clocks */
* e4 z& V- ?2 T+ [% nMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, u& \% ?% l# ]
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 q+ J/ B; G% @; k$ V5 _) VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 S# r" c% a4 {/ s. K
EDMA3_TRIG_MODE_EVENT);4 T8 }( r' L7 T4 u# n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 R7 v9 |+ u3 x9 E& g
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// |  N7 I$ j5 O( P/ y" z: s' p: W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& @  j6 i; F/ `0 l2 P
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( P! E" z- P# h
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
8 K6 }2 B8 J+ d7 M5 ~McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) B* L$ X, U" _% J& N9 ^3 W
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 v* \9 l- W8 i' J" e}
! ?3 }; I1 y$ d; [, \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 ]7 j% A( B' |+ W5 C, D4 Y; e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-3 10:57 , Processed in 0.042390 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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