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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11205|回复: 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,
$ M0 t# H& ^0 M$ T* B0 N* a+ ^" Vinput mcasp_ahclkx,4 [) |4 Q1 s; L# j7 f2 k0 m
input mcasp_aclkx,6 j( G7 r. b& E
input axr0,
, R$ A! p+ s: }, L3 k& u4 s* t: l9 ^2 K  T8 E
output mcasp_afsr,
/ I6 C2 {$ v& L: g% r# ^+ Koutput mcasp_ahclkr,, Z& Q# a& Z6 \" r0 K, M+ c
output mcasp_aclkr,. I2 P" z) F5 q
output axr1,
9 q* x4 l, n0 d7 k
assign mcasp_afsr = mcasp_afsx;( y3 |2 |0 T  m" p9 G5 B/ \, O- r
assign mcasp_aclkr = mcasp_aclkx;! _6 _) X3 x6 p! s! b$ O# ~
assign mcasp_ahclkr = mcasp_ahclkx;# N% J3 I% }% ~
assign axr1 = axr0;
' G8 k8 r" _+ @4 S% z$ v6 ?, a* W
- }0 \& ^( E+ v0 \
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ e5 F: A3 k# H. E; _2 ~; s
static void McASPI2SConfigure(void)& b1 n. |/ `# t2 e/ c9 M6 _# @8 t) z
{* }4 J' q- y: ]" [0 _" _+ d
McASPRxReset(SOC_MCASP_0_CTRL_REGS);) D7 e# p/ ?  q6 M( i# K6 u. k
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ `* j3 v7 ~2 {: CMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' N6 C& M- D/ K9 W9 \
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* o  f! s9 ?# J
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# k8 ~! i( B: L; ^1 F$ o
MCASP_RX_MODE_DMA);% @- q7 @5 v( e9 L
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% x0 K6 s/ T! iMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! o: R9 G1 [) a" \; P: B9 Q8 e% n9 oMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - h0 R: V# G, \) `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 A# u! |- V+ d# C% S1 J$ WMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' R8 m: ^" h5 {2 HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 S" h5 j% D! s$ a7 h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ E9 b# U' I9 R, X7 m, tMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 6 x8 r+ R- a0 V8 N$ O$ f8 R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: [2 M% R" A5 w' @0x00, 0xFF);
/* configure the clock for transmitter */
" ^4 {" H0 e. W" ?7 NMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 ]& O. s: Y8 u9 g9 M# sMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 A1 z, c+ H5 M' |/ q* ?! Z" JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! N  \7 N! K$ N# k1 l$ @( F0x00, 0xFF);
4 @" T) _! Y6 F8 v2 r, A( x  a$ E' J  s! }; U& E
/* Enable synchronization of RX and TX sections */ 8 k0 i5 P1 l6 x, w
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 ^) A7 @% p0 A) o9 u3 c7 y; q) `; `McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);8 i* T6 `* j9 H9 N
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 I* S$ D* L0 o5 S) k2 @6 U** Set the serializers, Currently only one serializer is set as
4 X% F, E0 S, f6 N. z. d** transmitter and one serializer as receiver.) g( _4 W0 L  @
*/* b4 a; Q; Y4 x7 d6 B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ z) T- s! U7 x6 ~+ Y: KMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 l) a  [& G8 ^' F. K** Configure the McASP pins : O& [6 t  V/ |) C+ V$ W
** Input - Frame Sync, Clock and Serializer Rx/ d! F' `$ w+ x$ e9 ]' \
** Output - Serializer Tx is connected to the input of the codec ! d5 t0 y4 Q5 Y
*/
( a" b/ J" h# l) TMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 a$ j. ?3 |5 h2 }9 S" @McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 M2 k! I* u" _, G- a& D' c
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 M: j  _# _5 T
| MCASP_PIN_ACLKX
2 {3 P" P' c/ V! }" ?& V+ C| MCASP_PIN_AHCLKX, J2 _% y- ]" o# u$ P2 Z  v9 G
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# _' d2 ?% A- ^9 R% j! aMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ _$ |* r' _" q2 j$ g% g| MCASP_TX_CLKFAIL 8 |' a: C9 K$ i8 S: M4 N. h
| MCASP_TX_SYNCERROR
2 U/ Q3 j; A% w$ c| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # f/ ]# L- N# g1 S. @" A" \
| MCASP_RX_CLKFAIL0 c7 M- ?, I* t7 ?/ w% _& Y7 ]
| MCASP_RX_SYNCERROR
% q  d' E9 S5 _| MCASP_RX_OVERRUN);
7 G  ], I# ~7 E  E}
static void I2SDataTxRxActivate(void)
. f# A) }4 c" e2 L, g{
. I. z3 Q1 C6 u( |/* Start the clocks */
6 p  n, N0 R! P' u& W7 b& D9 N" PMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 \5 L' s! U+ S( o( ~1 `+ m) wMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  B" W& V0 m3 C6 V! Z& n4 sEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  Y' x  T) m+ ]6 V/ h% UEDMA3_TRIG_MODE_EVENT);, ^' [5 C; o# Q0 C$ z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ \* F4 ?( x7 t+ IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 \5 e# Y  q8 QMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: u5 \" y6 k# F! I
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; T; A* M7 e  o' n  ~2 Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. j5 R3 E* Q, L# hMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);" `6 m4 Y4 ?/ f# {. E9 h# V
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, y. z( F! X" A  {! p- s
}
- E$ O) Z8 v) H0 G, Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# ]6 D" A" Z% h$ P  P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 04:34 , Processed in 0.042329 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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