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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10688|回复: 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,
, F/ T2 I& l) ^% r$ \, v6 L0 C. M; C# qinput mcasp_ahclkx,
$ u) p4 t# f7 H7 E- ^$ t5 e' E6 kinput mcasp_aclkx,
* }6 N: `, J& O4 ]4 b" yinput axr0,
9 Y% n0 x/ A' J7 |5 [1 r$ ]. p5 e- F" \
output mcasp_afsr,. E  [. Q% F/ s9 R8 ?/ u
output mcasp_ahclkr,
& N+ V& z) A  Z  f$ |$ [( Poutput mcasp_aclkr,
4 h6 Y/ ?+ _) u6 C- n9 [output axr1,
* m% b: e9 [; M8 ^$ S
assign mcasp_afsr = mcasp_afsx;/ F/ v/ F4 A$ C2 [
assign mcasp_aclkr = mcasp_aclkx;
& t3 ?' I2 @. {5 d. l7 g; w7 s, Rassign mcasp_ahclkr = mcasp_ahclkx;* A5 y$ Q$ J# ~1 N9 i' Y
assign axr1 = axr0;

6 I8 W5 k8 r4 c; E( }7 }* y' ^
- z3 K1 S# x7 p7 i: m: `# [
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& r( Y$ H/ F- K
static void McASPI2SConfigure(void)
' A' ^2 C- `; q2 O1 U/ J+ H! B{
0 g4 A3 C6 Z* QMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
( M1 ^1 V9 C. IMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 s# j7 g; q1 l& G1 M( [8 s. M
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, P2 M; g) f: t6 g: u' C3 M. dMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- ^. q( I/ w6 x: I% o. q  YMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( P7 g5 K: w& K' y2 d9 }MCASP_RX_MODE_DMA);
* `9 q, g* o" K6 A1 d4 u0 yMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. o! f- o( m0 `& ?8 P& [
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( _* \+ l5 V: r& @' u% |  i# jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . m. l$ G# @( ~, C6 [' Z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 ?) D3 m% q0 ^$ l' b0 Q! w* n/ qMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# F, g5 M0 H5 ?. yMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 I8 O: G! s6 k7 i
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);1 j8 Z) ?+ a: V' G/ m+ T$ U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & g* r. u4 v6 z5 S9 R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; V& N& \3 h: H  Y+ R  T6 O
0x00, 0xFF);
/* configure the clock for transmitter */- O$ V9 ], O' R2 D( t
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 J3 W6 ^4 H0 T6 k* b6 F5 CMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' }& F3 n# p7 t, h- l
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,5 d  Y( c! x5 @8 n+ |: F
0x00, 0xFF);
' h( p$ A3 P9 E; n* J" a1 o/ u' J( W+ ^) T
/* Enable synchronization of RX and TX sections */ - n" n+ F/ T* M! c4 r$ h- R
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% v. A% b' J: D, B- z/ D
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* j) |/ W$ u! _8 N5 C" [4 t" Y# W9 S
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*  W9 n2 T7 a2 M0 G2 D9 s2 d
** Set the serializers, Currently only one serializer is set as
$ L- U8 X# g) t! q. U# l% I; J** transmitter and one serializer as receiver.
; G. x  M5 j4 k/ ~- h*/
6 p/ k  `' N: V: tMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, ~$ `3 F% B5 M* j: p, J8 ^6 R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 i  o- m+ h( j# }: b
** Configure the McASP pins
6 B1 B8 g0 r0 \** Input - Frame Sync, Clock and Serializer Rx
6 {* M4 _- d* \& M2 y$ {: M& ~3 j** Output - Serializer Tx is connected to the input of the codec
$ c5 O0 s* U7 m2 k*/
- l% C! z" r- ]0 }( dMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 J& w. {7 ]1 \0 `
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  p! O& S6 f! {9 n4 A" c
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) x* ?8 ^5 n" {( ]& t; b+ g# T
| MCASP_PIN_ACLKX
0 c+ I0 f9 @( _; c| MCASP_PIN_AHCLKX
; P) u9 I% R& d8 t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */1 [; Q$ z4 a! P. ~" S( [6 k
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 l, A3 ?! }9 V3 ?6 p4 `
| MCASP_TX_CLKFAIL ' Q% o) R# r/ N2 n
| MCASP_TX_SYNCERROR! H8 s4 o% C7 s/ ^2 R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
6 x* l) H  X, p| MCASP_RX_CLKFAIL% Z  b) X3 @' A4 h
| MCASP_RX_SYNCERROR
1 j4 t3 `' }' ~( p| MCASP_RX_OVERRUN);3 `* @0 J/ K& U! l2 n5 U
}
static void I2SDataTxRxActivate(void)# E9 \  ^3 Q  M% p+ [7 y
{) N3 ?% P8 y% ^1 Y' r# P
/* Start the clocks */- Q# P  r8 ^. p; J6 a5 |# {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( a" P/ E2 M2 a
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 O0 R' t6 F* A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 ?% [4 e( l# \$ j* D2 ?7 b* w
EDMA3_TRIG_MODE_EVENT);
1 ]0 `/ h" {9 s/ |9 WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- F, F" C+ _/ y8 ^5 D- @# EEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% z2 X4 W3 E# u: hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  t* p3 o8 N+ gMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% W" a+ U: c& d3 `. k# X) t6 \while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; x2 ^: {- E  f
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 [' U5 ^( S9 I5 h, o* |9 ]McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! S* s* p" q8 X}

) b+ @! n1 N: H7 N1 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 Y9 m( O: X* z8 q6 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-13 05:24 , Processed in 0.039501 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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