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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12369|回复: 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 L2 k  y) t5 D3 C3 [input mcasp_ahclkx,
( A: d) D( A  p5 t3 s8 @input mcasp_aclkx,1 C. q1 U3 n0 J# l; d8 w! r
input axr0,7 J* l# ]4 F' P% |
4 R- f$ \& l6 b* [" V( x' U
output mcasp_afsr,
% v! d3 y9 T# \( ]8 y" E! {output mcasp_ahclkr,& d! x, Y; W+ m' d8 E
output mcasp_aclkr,/ z& f  i2 g4 Y! [5 q
output axr1,5 O1 ]8 A7 g& [' l/ b; {
assign mcasp_afsr = mcasp_afsx;8 a  l3 I! s! I  G3 a- f
assign mcasp_aclkr = mcasp_aclkx;
! d9 d. P6 c$ P; V$ K+ U  s: Massign mcasp_ahclkr = mcasp_ahclkx;- H9 @  R! i- t. I0 i
assign axr1 = axr0;

: `/ W" x- D9 `2 f9 r
8 O4 l' }; z; b0 |3 L' Q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% }1 q4 d& P; b, e' U+ |
static void McASPI2SConfigure(void)* z! i- q3 W0 B2 d  m8 w$ u* Z
{, V+ _5 P2 i  g9 E# n
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" u  y: @3 `* Z  EMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 X: I8 o! T% B$ _# Y: k. n* r; }
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
5 S9 l" d  R+ jMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// [* f+ F1 u6 Y3 A% d7 {' x, R" u( p7 p5 e
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% r( _5 o& P- `, \
MCASP_RX_MODE_DMA);
) {( ~; L" K5 `7 S4 M5 GMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) U  O: g- y" s  k3 kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! t, Z" w0 \9 M$ Y! Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* }9 e) q* W& I& ~MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% X$ O. x; y+ n; g
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 `9 d2 t& ~5 F6 X4 O/ B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 U- r7 e8 q7 V0 `6 z7 r! EMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: d4 T  R( j' i* g/ pMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) |1 T: i& w, ?: L* \& V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; I/ j! o2 O. \0x00, 0xFF);
/* configure the clock for transmitter */$ D" x2 [2 W& E  i1 F
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  d4 r5 O# G  k! G4 m3 v1 b5 ]; W- MMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 a$ r* K/ j! d$ Z$ i) ]
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  d6 N) }* P& W8 E% A
0x00, 0xFF);
2 G) t+ g. E, P2 R1 @; M3 S9 b" A$ ~5 x# Q2 ~
/* Enable synchronization of RX and TX sections */ , j' @7 L/ B/ G2 \6 u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 L, M' S0 a7 _9 n& L) ^% a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( o- V" R; |, o" s1 }  C
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 |& o' ^- W; f- x
** Set the serializers, Currently only one serializer is set as5 S- W4 D: `" F0 w2 |
** transmitter and one serializer as receiver.7 f$ X- p, ^3 ^' @# {3 ]+ Z2 v4 ?: m
*/  |0 k, v& R1 M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' V9 ]; u# d# z! JMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- s9 L0 R$ a5 V** Configure the McASP pins
8 ?" p6 V5 [- Z9 A4 l** Input - Frame Sync, Clock and Serializer Rx# J4 V" O7 r$ N! Y3 J9 x8 d0 _
** Output - Serializer Tx is connected to the input of the codec : e* J/ Z* `8 @
*/
- _& r7 Y. Z1 e4 [( j7 CMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 {, W9 k, y& xMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 J0 X2 D9 \9 @) b3 aMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, b& S9 R9 Q/ ^8 E& u. K* o5 l
| MCASP_PIN_ACLKX
" T. H. L* f, p" e| MCASP_PIN_AHCLKX
  J& G( j+ P6 J) ]# a2 i8 a3 k+ D& `| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 F0 a! M9 l: S) i# E  j2 V
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : X; U: w+ z6 }; z9 R# s8 p( G
| MCASP_TX_CLKFAIL
$ O7 j5 v, V7 e8 M| MCASP_TX_SYNCERROR: z$ A/ u  H! v' {
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- ^  c, ?2 J* q6 f# n" j" U| MCASP_RX_CLKFAIL( T1 ~: o5 U$ D' L' T2 B
| MCASP_RX_SYNCERROR / k2 `/ X/ S" B1 w- O0 A4 D' g
| MCASP_RX_OVERRUN);
0 q, I2 K' y( m( m4 W" e& p}
static void I2SDataTxRxActivate(void)4 ~2 J0 u( q& ?. B+ R1 P
{0 Q: w  F# r! @4 ~
/* Start the clocks */& L: V  L5 ~! i. l1 M
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 \0 h' B" L& U4 B' RMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& x$ X% f  A/ ?( E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: _- D0 k0 o, J: j
EDMA3_TRIG_MODE_EVENT);) w; G+ p/ J  K/ b7 F; a4 Y# s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # b, `  T2 V; v- O6 S# |4 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */. q2 `: _" B- }! u  h8 q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* s! Q9 k; M" v8 V
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 h6 g) I; B) X; E  o
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( q* ]/ e4 c* z6 \+ h* |' g- RMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);" i$ q: K: n  p; L5 e6 X1 ]$ W- u
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
7 J( ~) Z- M# O" B, D}
, Z5 ^* z1 U: l9 _" {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
4 d3 [! G% v0 @" {# ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 19:43 , Processed in 0.038550 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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