MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8572|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- g6 v1 I; k0 h
input mcasp_ahclkx,7 q: M% H1 D) j8 R0 Y
input mcasp_aclkx,
# P- M4 S2 q+ ]: B  linput axr0,
. i/ w: k" M9 d; Z  P5 r& R( g6 o3 G  O, j& i. ^5 d% A
output mcasp_afsr,
/ ?6 ~9 I0 Q6 t( G/ T  Xoutput mcasp_ahclkr,
  M* T" h& y  w, @output mcasp_aclkr,
2 L6 ^2 |+ p4 ?* q" t4 i' D- q; Foutput axr1,
3 C+ \+ a4 p- ?! x/ f
assign mcasp_afsr = mcasp_afsx;8 J- M  s* E8 O4 W" _
assign mcasp_aclkr = mcasp_aclkx;; F. C& a  s! K1 Y
assign mcasp_ahclkr = mcasp_ahclkx;/ b2 Q* B" @3 u4 c, W* ?( i2 P
assign axr1 = axr0;
, F( R5 q6 Q0 U0 b& _$ v6 u8 p
# f+ |1 G: @( y) I! z4 O1 y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- w9 k6 x1 x! h! D8 r: v
static void McASPI2SConfigure(void)
) X1 Q+ X& Z/ k8 |0 u1 H; g{
% Z/ V+ T8 I/ W8 U3 k9 sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
* P1 D4 M3 M4 tMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" e: v6 i1 d; }2 }
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);+ x7 b/ Y  [. [, `2 d
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: u6 {' n/ v; W) W+ s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 h) V+ [9 K5 L& r* G- a
MCASP_RX_MODE_DMA);! e) ]4 B+ w% E/ T* W
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) i- `4 Q# y3 L5 W0 {% \1 j
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ o  L. `+ u) g4 aMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / y: i) q+ {( S7 L$ J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ t, r$ H: l7 Y- a: ~, eMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   I2 h# z0 }8 H0 @, @* S* W9 @
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; }8 R1 B, C" E. ]( ?5 F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: q, q6 A2 p  X+ c% \+ P# d! G
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ! m% f! Y8 ~$ v2 I3 x) W
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- y) Z9 k( r1 g& |' X
0x00, 0xFF);
/* configure the clock for transmitter */( {- }; l) R9 u+ V% R) r; ^4 k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);/ M, Y& f9 E1 n
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % s6 u; ?6 h* B! T
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* h, v! u/ U5 D1 ^, F4 `0x00, 0xFF);
4 ?: n6 V' W: `/ |1 y
1 |2 v# o: e: q5 p6 ]8 z% d/* Enable synchronization of RX and TX sections */
6 t' G+ h8 W: N/ ^3 pMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! k$ E% d! ~1 [- c# z" _  g! ^McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 U7 P5 S+ r0 A& \8 w: ~( Y* q9 M
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) T- a0 H5 e7 I
** Set the serializers, Currently only one serializer is set as. D' }7 G* V! e. K( N
** transmitter and one serializer as receiver.0 y& U# j4 B4 ?2 _2 P: F3 q
*/: D" [5 k9 G. c2 ?) l6 Q
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' \; {7 a* z$ y( C
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ n( p& k1 |/ ~6 T  L** Configure the McASP pins 8 \( h5 J% o! y3 S* a6 J
** Input - Frame Sync, Clock and Serializer Rx
$ S" {" ?/ o8 w5 s, D; B** Output - Serializer Tx is connected to the input of the codec # \8 T2 J. T# f
*/5 a) l: M5 B, G+ l& h/ l
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' s" u) v$ P4 p- A! @2 d1 ?3 yMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- @0 |: x) p/ l
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  A+ |3 c7 L% o: t2 b7 M( O| MCASP_PIN_ACLKX
( M, L1 l1 _* q( S; O| MCASP_PIN_AHCLKX
; H" ~4 _# z, q7 P. j0 d| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
6 x, H) r& q% F0 I1 _, V. `6 GMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 Y* a& n. x/ V8 o4 }$ V| MCASP_TX_CLKFAIL 5 T2 n# I; O- q7 k/ @8 F. l
| MCASP_TX_SYNCERROR: _3 _# x, B1 @/ c6 N
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ z; o3 T0 U- @: B$ y- X! i5 I| MCASP_RX_CLKFAIL
' y/ }: ^; Y5 \" X| MCASP_RX_SYNCERROR ; P) [1 h$ S2 q- Q% x) `- `
| MCASP_RX_OVERRUN);$ O8 t* ?8 X( {* K1 \. X
}
static void I2SDataTxRxActivate(void)1 `, Q- n* z1 L! j* h
{) A# V: G& ^* E/ D9 J( Z  U
/* Start the clocks */9 t2 @1 b& M) C+ ~1 n( H5 w6 T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( ^) N, Q) k: q, J$ r4 }$ N
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, ~/ l- ]. o* o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  W. r1 Q) b! l% ~4 |/ s
EDMA3_TRIG_MODE_EVENT);- N! i1 _8 p- G5 O$ W+ w6 O5 T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 f# B0 |' p, l% r' d" oEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 b! X; m$ J! `8 b' C2 y' RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 J$ I9 X% d; _* l% d4 W- O. i
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) w2 \7 m- f: k, N
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) S# j2 Y. i% A, ]8 |& U9 u: O' dMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);& U' o, y/ E; ^8 c5 ]% q+ D
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);% |- C$ v0 j2 |0 K& W' b: c
}
) U; A& f* k2 u! V2 P8 {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 c9 E/ `. Q" L0 t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-27 16:20 , Processed in 0.046036 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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