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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
* b. I, o" M7 t, zinput mcasp_ahclkx,
% V! `1 [% r8 C- Rinput mcasp_aclkx,! O; v  b# R' ?. `) u
input axr0,) u5 e4 m* @3 G9 T4 N3 }
6 u9 e/ x& D1 {+ Z
output mcasp_afsr,1 j) g- }7 h+ `" x# q& L
output mcasp_ahclkr,7 E" Z% o. I8 _5 b
output mcasp_aclkr,
0 `: N2 h% I7 aoutput axr1,
4 u6 K) x) x& _) t/ Y' t
assign mcasp_afsr = mcasp_afsx;
5 d; q, D) ^( D! ^7 Eassign mcasp_aclkr = mcasp_aclkx;# H! _' E, o2 y6 d( d
assign mcasp_ahclkr = mcasp_ahclkx;# ^6 @( R- b$ }$ U$ D& n) n
assign axr1 = axr0;

, n5 t, k% U" E5 Y' ~3 `
$ T* a0 E1 y9 ~4 k! i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( C- Q- \. j' x4 u4 m( i0 a
static void McASPI2SConfigure(void)2 K2 @2 }! Z0 q  B. {0 m
{
3 j9 L# T8 {- j1 C  F. I, z: JMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ Z* N6 p1 W, Q8 J- D3 G8 r3 s" gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 P: u+ `, A7 P( ?* j) F, c5 iMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 h! i- k, p; u/ n- X! [+ b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 z' D( V4 P; {- Z- J  c
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 w1 G- S9 F7 \- X! X- j* bMCASP_RX_MODE_DMA);
& O" i* ?) m2 \7 d" }  uMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' r8 d5 o6 W; t
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 K1 t5 C, o) H
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   Z9 m  I) E* h. l) ]7 a" y# i
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 K& b) X$ {6 ?McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ B2 b* S, h2 J$ d; o; SMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: K8 `: |! ~7 ?: L; A& n# \
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ [5 S/ q) {+ ]$ B
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - w. z$ Y9 x% a9 W* _
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 b6 j; F- w4 z; R& g1 c
0x00, 0xFF);
/* configure the clock for transmitter */
+ d) h5 i1 t  B9 d( ]+ x+ y# JMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  Q  d! U' F6 }( h7 @
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 L. m# ~0 \( J  o0 ?McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
5 B7 f' ]/ v- _+ T8 R5 e6 p0x00, 0xFF);
+ P, D% L* h9 f1 d6 W+ N, ]5 |) v* g7 n
4 {1 b! u, t$ ~. j7 R0 i/* Enable synchronization of RX and TX sections */
5 u; s% t& d# l# z4 t3 ^0 OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 ?: h7 B$ J: d& ?9 GMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 q9 y3 K3 n6 u0 H7 iMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
7 v9 }+ T. E  U- V7 |5 S8 [9 |, Q** Set the serializers, Currently only one serializer is set as8 R/ r! s4 E7 p+ [% r
** transmitter and one serializer as receiver.8 h1 O2 e8 _1 c  i9 D4 G" T9 T- y3 }
*/
% n) n: [; v9 W3 I1 P; o7 n( @McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);4 G; @" e5 T# w2 c. P
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** p, ?8 g1 b" p* K  W4 }6 s9 [+ e
** Configure the McASP pins
3 X$ d2 J1 }' R) Q& W** Input - Frame Sync, Clock and Serializer Rx( S% m+ L& z( x/ ~  A
** Output - Serializer Tx is connected to the input of the codec $ e  \1 o" a8 Z& @7 j* q
*// ~4 R7 k* d1 ]' l" d
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) {1 f, k3 n% z8 Q: |8 N! XMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& G2 p3 x: S1 \; A1 }. o0 D; Q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) q/ R1 X. p& }| MCASP_PIN_ACLKX
2 d; M$ x. D7 C" U| MCASP_PIN_AHCLKX
, T# p2 o% e- P. D8 c1 _' I" E3 {' O| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, e- u3 o& A2 S9 z( P* G) }* G% A- O' EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & Z$ y3 T6 J" N4 j! J! W" \
| MCASP_TX_CLKFAIL
! l4 w/ |6 C& F5 z4 j| MCASP_TX_SYNCERROR
1 B3 h% s' K5 \  s4 r& A' i" \| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ p. K# d' U; T4 h: E$ R| MCASP_RX_CLKFAIL. ], C5 v8 h6 y3 A  S( V8 \
| MCASP_RX_SYNCERROR
6 ]- F3 w, m& \9 G) W) U| MCASP_RX_OVERRUN);4 M  `. c- t9 G0 K& Y7 G
}
static void I2SDataTxRxActivate(void)* N, S& Z- _0 A* x! D& e! a
{
8 W- M& r1 O" [/* Start the clocks */6 Q, x# p6 `( \$ }$ J3 @
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 Z# J/ q4 J) G. Q5 ~5 {4 \/ u% EMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 g- W- f, d3 Q; Z$ X1 Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* Q4 p2 ]8 z2 s% [8 ~6 a* Y; fEDMA3_TRIG_MODE_EVENT);8 M: j# N* w& C% w5 K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
8 h! z' W. F' n- xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */  W0 I% j" N/ S+ D# r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 c; s) Y# }& w7 h
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( x+ `1 ]: f& }
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& b/ X  u1 J1 C& ~% H! ^McASPRxEnable(SOC_MCASP_0_CTRL_REGS);% L! o) L# q2 F  V; R0 i
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: O# k  F0 t# @' T- d
}

( Q# G0 s9 W: m
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ M8 Q! f" r9 L6 S* \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-31 02:13 , Processed in 0.039566 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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