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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11451|回复: 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,
( L% O9 z& C* h, A8 r- s% Xinput mcasp_ahclkx,
( T7 B0 S! V! ^input mcasp_aclkx,
5 C, A- R" g. {6 @5 s7 Zinput axr0,
% G! G) m( L& ~- a
8 P& B8 w8 Z; Y( E0 v* noutput mcasp_afsr,( b4 {7 e0 b' r) B8 R% J
output mcasp_ahclkr,
4 ]* v' `7 c$ l6 D$ g  U# Xoutput mcasp_aclkr,
- B' c3 ?) e/ G, Y7 `* soutput axr1,8 c) ], a* V1 ^/ m+ N2 i% m
assign mcasp_afsr = mcasp_afsx;
4 e& x% C* z* W' T" F$ massign mcasp_aclkr = mcasp_aclkx;7 I3 ?( D- |% D0 p
assign mcasp_ahclkr = mcasp_ahclkx;
8 z9 z/ V( i4 \" Q/ ~4 \assign axr1 = axr0;
. G; J2 L( H/ i
( S* h, a1 s% Z& q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. T2 i; A3 D$ s9 {: f
static void McASPI2SConfigure(void)
# r# @6 ^1 M! l* ^- R% @! U{- w/ X; u$ m% D8 m; f# A( w9 Z2 v
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 N8 A5 a9 u% f3 S" r4 ~3 s( kMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 W4 L* f' C' O; `McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  A% @7 E" F% Z  kMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 c0 N7 s& H  V8 `) p/ H% a& v" _0 ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: ?  r1 ~5 J& ]1 H7 X! O5 OMCASP_RX_MODE_DMA);
- }  e1 l; u0 b' LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* C3 h3 i0 P0 z6 ~& OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 l' P6 h( E. _) u( iMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 h& C' E- q" I! q5 M6 i4 d0 ZMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) H+ l( F5 W& H  F
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 k, U' S8 w5 z' F0 n( I( I7 T
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% \: x6 L# V, q4 e. E$ {3 m
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! X8 D6 |. I, r2 ~
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( l0 b9 F1 c  i0 PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ S% {- r* d* x- g- s5 y& e) F' x1 b
0x00, 0xFF);
/* configure the clock for transmitter */
# [' E9 n  ]2 BMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ L" O) D* d( x, y% n* j6 h+ EMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  L6 q+ N* u  v7 Y9 H  }2 @McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 I6 a/ b6 G4 e2 k0 m: |0x00, 0xFF);( K  P" y5 X0 }) J7 y$ d
0 L' l1 w' B- x/ z
/* Enable synchronization of RX and TX sections */
! j* v6 }) u4 \, |. S& o" o3 U" IMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 z  m2 @  g* A9 x3 H# Q7 M# v
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 H- k2 ]4 S' B) LMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% Q4 y! z& T2 H8 K** Set the serializers, Currently only one serializer is set as  Y3 }8 @7 x, [# I( p% d8 t
** transmitter and one serializer as receiver.
; U3 @+ d5 e4 b1 Y*/
$ P5 O( o4 w# }9 Y" d5 TMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' v9 R% `* n0 c2 k: ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( J: h" J2 N2 G' v- ]% c
** Configure the McASP pins / }" O, {+ B+ j+ I. u
** Input - Frame Sync, Clock and Serializer Rx- G9 K3 {1 h5 Q: f
** Output - Serializer Tx is connected to the input of the codec
  l) {7 Q4 E% H, X*/
) I3 ~- n+ h  pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  }! o, y+ [: P; \$ H  Z) P) ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ U# p& a/ r% B9 J3 f' l9 [McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 u9 a: v8 J6 X3 N! S| MCASP_PIN_ACLKX7 j+ y( y1 j& U) s/ F6 v
| MCASP_PIN_AHCLKX
7 @4 f! `) o* W* v( I. }1 a| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* g3 H% d/ ~6 ]+ Q$ K( e* GMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( V1 k# N$ J& P* x- H& `
| MCASP_TX_CLKFAIL ( n9 y. a* I$ w8 d# L- F
| MCASP_TX_SYNCERROR
8 u" U7 y8 z' q+ L+ o| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
4 b$ f) [. N, a3 [- O0 C| MCASP_RX_CLKFAIL. `! H! F, j- F: W" k
| MCASP_RX_SYNCERROR / d" Q: i# r, v# V8 O
| MCASP_RX_OVERRUN);
; V, r( o2 G# E* `. q}
static void I2SDataTxRxActivate(void)3 p! Q1 g3 e/ W0 L
{
. L7 W. S3 o4 M/* Start the clocks */
. S5 u' I( e  V+ O/ h+ E7 BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);5 `5 S1 \4 z, h: O
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 }/ ?: C" j& K8 @9 [+ z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' t3 k2 n; Z2 U/ \% p2 T
EDMA3_TRIG_MODE_EVENT);
& E4 g, _) _& {/ `2 O, ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
/ q5 Y" r/ L) mEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; I+ p1 B8 |, v' X) H1 C9 q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% n# v7 k' ]! P7 LMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' K2 g* r- q- O! P" {7 z- @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, F0 f) j# G8 N- ~- Q% q) Y
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 ]5 o. m3 a. h( Y% p9 {+ r9 d
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! Z/ |' W. M& s}
( K7 j3 ~, _1 \1 l6 n4 G6 L) \# E
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% N5 h. F* H: ~1 _+ a- g6 b9 d: q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 18:42 , Processed in 0.039088 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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