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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10903|回复: 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,
/ Y1 e5 {- R3 {0 {3 {$ Kinput mcasp_ahclkx,
5 }# s5 X5 a% z6 ^0 I. X+ ~input mcasp_aclkx,
4 n$ |, n9 n' G) Q! Q0 [input axr0,
$ b- @$ i) r/ s( g! y& Y5 F8 H5 E
output mcasp_afsr,
. Z+ e2 C$ w9 k/ }9 u- K5 moutput mcasp_ahclkr,, E; Q; \  |4 q0 x& i
output mcasp_aclkr,5 M% y1 D) L' S: M7 D% s8 u
output axr1," \/ Y$ `5 Z% X: J( o3 i
assign mcasp_afsr = mcasp_afsx;
7 [. N. x( G6 ~assign mcasp_aclkr = mcasp_aclkx;
5 @. ], B) }0 {7 y2 Wassign mcasp_ahclkr = mcasp_ahclkx;
3 `4 |; U4 F1 i+ a1 h/ V- kassign axr1 = axr0;
6 i" D/ ^) {& n- t
8 h6 T2 z# S0 p  Y& M- U0 l  _" i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

8 Q" G# y2 j7 K( i
static void McASPI2SConfigure(void)+ c/ E* |' L1 x+ w6 v8 M
{
; u6 r$ i. R) SMcASPRxReset(SOC_MCASP_0_CTRL_REGS);1 X, m* T7 j7 u( G0 y4 b9 n& }4 Q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- X% S# i8 E: B7 }' v3 l7 ^3 l
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ [! M% D0 U- Y0 PMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. g9 Y2 R6 ~! ^" @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% u; E* ]  r4 p$ P8 W
MCASP_RX_MODE_DMA);
3 b8 W0 p! e- L7 y; CMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 v1 D: d6 j! G; j
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ N) P& J1 J6 p+ E& J0 F+ l0 j1 |
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 G& P" E) a: H: h- D
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ [  b. M9 S: G+ }; t8 p  r9 ]
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* ~8 k' u( s# [1 P/ [9 `# iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% r2 l  P+ `0 F2 Y* Y
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; \7 L1 K/ k0 X5 P- G, J" B6 G, p& g5 A
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' ?% P0 ^2 z* Q! P
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' L1 i- D! p& V0x00, 0xFF);
/* configure the clock for transmitter */
" d# g0 m  a" n( c' XMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 T& H0 Y% _/ b% d- k+ a
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' [' y! ?; p8 G+ l( B: y- D: u1 {McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 D8 s# e9 Q2 \5 B1 K; J% X2 X8 s% O
0x00, 0xFF);
3 ]& j$ o; C+ [. {7 J, s
" E  n& V* r7 g7 ^! z/* Enable synchronization of RX and TX sections */
: x6 k6 c8 I9 [* s; r$ u+ XMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 c7 V# i; ^, x. K$ ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);+ U1 N4 r# G% A' f! L
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- f! t$ G# z! l) R5 W
** Set the serializers, Currently only one serializer is set as
+ M. ^5 u  g4 Y, L9 t** transmitter and one serializer as receiver.1 z( L( ^, h7 k8 t" ?4 x: }' G4 B
*/9 r& l: [3 e' \; ~/ g! i7 _8 ?  l
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) ?) a. v$ K* w1 c4 lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' h4 E: O! U' b/ E  a# |5 x** Configure the McASP pins 3 e5 h! Q3 [7 i- h; j1 [# d
** Input - Frame Sync, Clock and Serializer Rx3 b- U2 M! ~" Y, C0 ^4 x
** Output - Serializer Tx is connected to the input of the codec
, r' C% w6 _' U5 k+ b*/  a, b7 M0 X  h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);; ~/ L  w: o7 Z4 J
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' g7 h- w! G$ t
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. b6 f' E- X6 }* Y) d* l7 r/ ?
| MCASP_PIN_ACLKX: t! a$ x! e4 f$ S
| MCASP_PIN_AHCLKX, f$ ]; F& y) F+ ^
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' q7 N* B9 f' v5 u2 t7 OMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ y% c* M6 M, R| MCASP_TX_CLKFAIL
' ~  f  n/ m1 k! \3 V! b| MCASP_TX_SYNCERROR& @+ d. r* \* P3 c* L
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR + c. b+ ^& o7 g2 R9 V! `0 n
| MCASP_RX_CLKFAIL# |9 X# U* f! e) W- J
| MCASP_RX_SYNCERROR 5 ^0 S3 d/ B5 L
| MCASP_RX_OVERRUN);
. Z4 S5 ~5 c. i" [}
static void I2SDataTxRxActivate(void)
: r+ y* D0 K) L{
- e. f& f9 [2 M: r/* Start the clocks */# e# F7 h. I2 b5 W, {' t: J
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 l" J. S: r, C+ P' F; bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */! E! H3 [( X; x( {7 @9 S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,* p8 H( V/ q4 U- T7 G
EDMA3_TRIG_MODE_EVENT);
2 {# N* r" G6 Z1 e! N5 b4 |4 tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, j9 a6 X  e6 `2 ]1 \$ W7 xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, J4 A6 P- v( l. FMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 @. }1 L# G5 a7 V. {, u
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' v: u& D9 S0 }0 T( V  w' ~while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ U( P3 p% J2 T" b, X4 k
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) F# X# `; b# r6 |1 E0 VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 ~8 A8 p: G4 V( k5 i" J; Q
}

6 L' W9 Z8 w: [0 Y3 h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 {: q" P1 T! E. [8 D) i  A) K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-18 19:18 , Processed in 0.039265 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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