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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9440|回复: 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,
& ]4 P. \3 p. b4 H: _input mcasp_ahclkx,9 H4 @. Q8 I" N! t! [2 Z
input mcasp_aclkx,
$ a# B& ^* `* p) q* P  {input axr0,
8 }* P% |# R2 R6 i  v0 N
' M% \8 l' `, Q4 P  ?7 W! Youtput mcasp_afsr,5 U3 f1 Z  P/ j# V, |
output mcasp_ahclkr,
3 G/ w+ k0 K9 f/ k: w% ooutput mcasp_aclkr,0 `) q+ ]  D4 V1 c
output axr1,
5 d' k" C) @7 a+ |+ U7 C: ^& V+ Q
assign mcasp_afsr = mcasp_afsx;
' a  r3 U9 Y( `5 xassign mcasp_aclkr = mcasp_aclkx;
3 P" r/ @2 p! @5 r* C/ Iassign mcasp_ahclkr = mcasp_ahclkx;% {5 O2 g6 x$ I; N# H
assign axr1 = axr0;
5 k* U7 y; g4 z4 v8 ?

, d6 ^, M; l% u! e" `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- }" K  j' ?* s
static void McASPI2SConfigure(void)+ Q. l: q. l: Y$ F  h* v
{
$ t+ K6 z; b! o2 ^McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 ~1 m! W& m: S  z1 t( `8 O' JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
3 M/ E+ {9 n, p+ rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. G/ ~  Y; X0 Z3 eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// X- a5 m1 q6 f4 F5 k
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  u& ]. C$ j' j3 CMCASP_RX_MODE_DMA);
) Y+ G& c) n* vMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" c- b5 X7 q+ @& ^2 eMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ v/ p% q5 k+ y' ?! }$ GMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - ^% E9 z) R- _2 N4 R
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 h- l& z. Y+ c4 O; h3 q' EMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( o! y% B; y2 y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 \- S; l0 C2 H- u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);) q; \+ t2 Y! s% e. L$ m/ G; s
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ G, H2 d- H# _* E8 {! {* T
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 t3 N, v$ ~: ~" z- N
0x00, 0xFF);
/* configure the clock for transmitter */
1 i5 `0 n8 v- v5 R- MMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 }+ I# i6 w: F
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& z2 Y" x9 H1 v1 `# Q" _" lMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 [' C3 J) z5 {) @$ ]! s3 M0x00, 0xFF);
  z8 y6 R5 T5 D( M( D4 ^2 h4 e' D1 ~' K, k( h
/* Enable synchronization of RX and TX sections */ " U6 n' `$ M" r- `# k
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! F$ f9 h* e; Y& K1 KMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ X, E3 i9 w$ T' Q7 B# X2 ?; `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- ]  F- H4 [+ _** Set the serializers, Currently only one serializer is set as) K- Q! i) B- i9 ^' F' r. o
** transmitter and one serializer as receiver.
+ W9 c* G# z. R7 X/ o7 d  c8 {; x*/
1 y" Y+ M3 }4 ]; j: T& [- j5 KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; S8 f8 A' p5 D6 X4 zMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, [% r6 Y# }- h8 R0 d" `; ~' d
** Configure the McASP pins
5 x7 m/ h5 v$ h/ J4 e** Input - Frame Sync, Clock and Serializer Rx' B5 q5 _0 W1 ]2 j
** Output - Serializer Tx is connected to the input of the codec ! l' A+ B/ e& m; j" S6 w  l
*/
3 A' i5 N# z1 |) o- ?& W  ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( q5 H# {( X7 r( y1 q! p/ `! K
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) U  b0 x. P9 v: Q. j' ~McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 I  B- j* _- e# a  K2 H| MCASP_PIN_ACLKX0 |6 B  Q& |6 g, k7 h
| MCASP_PIN_AHCLKX
# f; n+ l3 v5 ]5 N% t4 W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% r! [3 D# r, P( EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # V4 v2 h& Y! C3 s3 q; b
| MCASP_TX_CLKFAIL
3 m( ^: C" G& [| MCASP_TX_SYNCERROR
& \. u: v5 D/ T; l8 F2 {. P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 i& Z, p4 |$ B! [& ]& D; ?2 k
| MCASP_RX_CLKFAIL
9 N( s, L$ _3 s, b7 N| MCASP_RX_SYNCERROR - f1 N2 H+ W5 e7 Q) K) s" J
| MCASP_RX_OVERRUN);. I9 B2 q& |, W' I6 O2 v6 u
}
static void I2SDataTxRxActivate(void)
2 k8 D* J) Q: o{, d' w  E9 T3 Z8 L5 G, d
/* Start the clocks */5 ~; a! @8 k. Z6 W1 C5 g* `1 A
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ q3 a" I1 W2 U" c5 [7 A: F+ k$ lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: A: T! m) {& z: R/ [. m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 F/ k) ?7 {5 ?5 jEDMA3_TRIG_MODE_EVENT);& k# }7 C3 e! g2 @& o* }$ Q8 G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 i' T7 M$ M; P( F/ z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 a/ P4 C0 D1 I1 {5 lMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ ]5 b8 |$ y# p4 U& u1 q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ Q+ m3 q' L, f9 j2 Z2 O0 E  lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& @! W* R  G7 o; i$ `3 kMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ l7 R5 ~( g6 G& {& y; `McASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 n6 m4 }7 t8 b6 l3 ?4 l5 q
}
5 l/ N9 M6 d2 i2 _2 Q9 |; x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

4 S4 i, t6 c: `7 X8 ]& t4 W8 V4 X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-10 04:11 , Processed in 0.038930 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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