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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9970|回复: 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,
& F  c* N7 a- @" J! [input mcasp_ahclkx,) ]0 J$ o' v! [; ~
input mcasp_aclkx,
! s. |7 p! Y# G5 f9 Q% Yinput axr0,  r" N0 g2 a9 x6 r. K0 q$ H

- ~& X( l: Q6 }& H- }output mcasp_afsr,
( J+ I. b* d$ J4 K5 i# e  C6 m0 ?5 coutput mcasp_ahclkr,
: j* V% ]5 e5 o( Loutput mcasp_aclkr,
. o9 u. f$ A9 u% B* w5 T4 Doutput axr1,$ x6 O; n# f' Z& R& ]
assign mcasp_afsr = mcasp_afsx;" B: g$ B# q' n, h3 c# T2 C- P' a
assign mcasp_aclkr = mcasp_aclkx;+ k" |( o7 `1 R% e' ~9 t: j2 _
assign mcasp_ahclkr = mcasp_ahclkx;/ ]) g5 C8 G' k4 P: z! C. q
assign axr1 = axr0;
; L3 c4 @& W# m5 I
2 Z$ A! U# U) f3 F8 Q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- F% E+ s4 J( t9 w9 P/ b+ P  [& ~
static void McASPI2SConfigure(void)" q- U2 c. A/ w: w. P9 B
{
/ v2 w; `* j2 z6 _8 }McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" o, [0 c7 O( J+ _3 C1 HMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 C9 |, ]$ z% ~8 n
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 A* l' G+ ~- h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */( |: l# t. k  T2 h6 U& D
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; K" ?+ p6 W8 r+ `( E+ EMCASP_RX_MODE_DMA);
- _2 l% ]" c' L' D/ nMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 X$ J: G& }7 L8 F- H3 oMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; E# |- {/ y0 `McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, , p" _9 J/ y* p! S. u
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 T. @# ?4 G) R; v1 Z5 ?McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / H4 ~" F; U' ?- Z& u% q+ D
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! ^2 D3 \8 a- C% s- g7 iMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 _4 D% x: W/ ]. g$ ^McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. s# J5 V1 }" t9 _7 @McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 i9 V0 m5 B2 v2 |# l
0x00, 0xFF);
/* configure the clock for transmitter */, t: I/ l; v4 e0 r9 r
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 K+ t' R6 [' B7 u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# c2 J+ K2 Y; l. [McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 G+ h" j$ Y, ]0x00, 0xFF);
' B0 @3 e0 z, P% v/ c8 f! d) q, R2 ?) ?# y" h
/* Enable synchronization of RX and TX sections */
/ R3 r3 A5 Q1 Q: R& GMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 L6 y  ]% E  J8 E. _$ Q/ I
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 ^: o$ m/ b" P9 i2 W
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** X4 q8 e) J7 H0 G. b
** Set the serializers, Currently only one serializer is set as
! R0 @  M# c) q** transmitter and one serializer as receiver.
% ~# C. F; u# ?4 j1 v3 Y/ F*/* @- x, Y- A% R1 l9 l7 }
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! D2 r( r! b( `3 t- T$ L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: I: t) {7 @% m8 _& z$ T. a
** Configure the McASP pins
" e  V2 y' }& ?& j# b** Input - Frame Sync, Clock and Serializer Rx' G/ ^+ a$ G1 S3 F, C* T
** Output - Serializer Tx is connected to the input of the codec 4 A7 q$ Q8 L' f0 d: A6 x
*/) |1 y& i" b* T7 t& B4 z3 t0 o
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
" Z- B. B: f" m' ]6 R" F4 {+ \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ C, l: m5 q& W5 o4 dMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 u/ b4 J. M% v& Y1 U, a
| MCASP_PIN_ACLKX
9 Z  p+ I- d% a& r$ a, V$ Q| MCASP_PIN_AHCLKX! H. d; z: W6 r9 I0 b
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: o, |; E( B4 k+ C- a/ X
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 s) Y3 l  _, m% H| MCASP_TX_CLKFAIL % o( X& s. o  z, c7 F
| MCASP_TX_SYNCERROR
7 L+ G$ Y& {3 y. ]1 T; `9 d; F6 g| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! U- t- M& i+ V+ ]
| MCASP_RX_CLKFAIL* I9 \. e* K$ a8 I0 N
| MCASP_RX_SYNCERROR ' ~1 r! n: a4 t& ]
| MCASP_RX_OVERRUN);
" u- t& F3 @4 k" O! ?3 o/ Z$ K9 w; k}
static void I2SDataTxRxActivate(void)
4 x+ C5 f& p" P" |{
; B5 V' F6 E0 a3 E5 H/* Start the clocks */
* g1 M' x, s1 a9 @McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) P' A: b, |- ]: q! `McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 n- v# z( H2 y5 c* {) {8 R; tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  G" j6 }) A7 H3 X
EDMA3_TRIG_MODE_EVENT);
# w) ^, T* N! r' L2 i/ r: GEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' Z& q" H' p  N( i, B. M
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ D$ F& n2 m. l/ p, DMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 j  T# T8 J2 k& ~6 L: TMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% T5 p! @- U6 ?+ X0 u+ l0 o2 R/ R/ |0 Awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" c6 r; h+ V+ w2 M! P& HMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 `0 m, ^" k3 l3 d/ w& `McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" [* |9 i# [  f6 ~3 v- ~- A}
& n1 G% T" u- \& F8 ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' |  `$ D8 A8 J1 Z0 }) e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 11:40 , Processed in 0.038242 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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