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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
" n1 y8 K9 t* K9 s' Ainput mcasp_ahclkx,
- N  W8 D) ?! W& [3 c! kinput mcasp_aclkx,$ g6 c0 x" r7 [7 R
input axr0,. B; z/ C- A# O( t1 a- |1 P6 U( c

$ s$ V7 R( L4 S7 f0 ^0 Doutput mcasp_afsr,/ u# \5 E' d- L7 U! q9 G
output mcasp_ahclkr,4 N# O, K; G5 h. ^: L* {
output mcasp_aclkr,
9 F5 ~3 N9 [4 v3 k: X! P# koutput axr1,
" ~" t6 Y/ X1 O' S7 t# Q) }
assign mcasp_afsr = mcasp_afsx;& g3 _& h6 `- m( I: d8 B
assign mcasp_aclkr = mcasp_aclkx;8 K! s; K2 ]( ~% k5 V" u
assign mcasp_ahclkr = mcasp_ahclkx;
' ?( h( G# N8 H" f8 g7 }assign axr1 = axr0;

+ n  H$ n% D! s6 U% ?# l, w: U: R: d6 Z7 o, ^: `9 h7 M4 r* v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
* H% I6 P9 b& ?
static void McASPI2SConfigure(void)0 D: p, U) j- o. i- A
{
& Q: x! e7 l2 Y) ?% V6 A- T1 WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ \3 Y3 k  \- B; M* pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 [/ q. I' k% F! g( a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 }' |5 G7 L" J& U/ t/ E* JMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, l5 C. k0 R$ J1 q+ AMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) y5 j! A0 i0 |' i4 y
MCASP_RX_MODE_DMA);) h% s1 l* z8 [
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: f9 K# I6 D; d2 J
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 _" N; H8 ^3 D( _5 |/ cMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ f2 r' _8 k: s* x  }6 X0 Y7 {
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 j4 b3 X; |( w) D9 ~3 n
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! B: p$ F( K4 i' d# Q! `MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& H7 S6 R( Y' C5 |: H( y
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ ~4 i$ v/ q' e: N9 I2 V$ i& ?+ w
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " t3 x7 W1 l. I9 o
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) \0 X4 C. V1 A, _: ^2 L4 }0x00, 0xFF);
/* configure the clock for transmitter */
! ~2 t, h: x. _( g  ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' y9 j) \9 F- {, v
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% U$ V; O, D0 @& M; u3 @. a2 OMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," Y2 ~5 x; u8 M/ e6 I8 Y# c
0x00, 0xFF);  B+ A  C! g- R3 m1 P; p1 F
5 d6 V# \7 T; `% H  s' t
/* Enable synchronization of RX and TX sections */
/ k" J) n' l' o5 }. LMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, L# c. w9 H3 @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 T1 B1 e; l- b5 f  ~& c3 P
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- O4 P7 a  ^( W, {* t# L** Set the serializers, Currently only one serializer is set as8 ~" y$ w1 c' k+ ^6 K
** transmitter and one serializer as receiver.
! F5 E" l. Y8 A7 r4 G*/9 d9 E( |* k) ]: e: S6 r
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
5 T: s; ?7 o6 J) ?  W4 ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
; R) y1 E$ r$ L, f! n' p: {** Configure the McASP pins
3 r$ X& b" W& T) |# i** Input - Frame Sync, Clock and Serializer Rx0 x$ n+ ]/ T  b% K/ n( D' J
** Output - Serializer Tx is connected to the input of the codec - B2 p- U9 F4 O* W) B, Z, E  Z
*/7 g! w" o, R- |1 P% T7 O$ G
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* C: v# ^+ M7 n$ \/ K( N8 @McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 v" h& |9 ^& F1 g. ?7 l
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. q9 ^3 k7 o$ e2 q| MCASP_PIN_ACLKX  N% u  K& P1 Z, ^+ t4 _+ C$ K
| MCASP_PIN_AHCLKX
: e1 l1 D% l  M; `, {" j# K| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 w: ~) R0 w! u1 T; E
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 I: M3 Z3 @- j  L| MCASP_TX_CLKFAIL
9 ?5 a( V* S- A  u| MCASP_TX_SYNCERROR( I2 v* j  ~1 _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - R6 G. f  N& n+ q6 n( H+ ?
| MCASP_RX_CLKFAIL- M* G' ]/ g7 [8 V4 W" k
| MCASP_RX_SYNCERROR
% M6 T+ }' c  S) U* |# P| MCASP_RX_OVERRUN);
/ d& Z& d) Q/ i5 J4 b}
static void I2SDataTxRxActivate(void)
5 e% M* j4 O+ \3 `5 G+ J/ {# t{
2 m. }$ G. P- t/* Start the clocks */3 T7 Y1 q2 O: G& y8 w
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* u' L# ~) r: J" g* M$ O9 ~* `
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */" o& f8 C6 x2 {' L* C4 K) F% F; U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 j# \$ H! o( i$ Y4 H5 `* A
EDMA3_TRIG_MODE_EVENT);, ~& U- R; J$ Y. x% V
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 V- f$ m5 z6 m- S) Y0 TEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 {6 E0 q' a* G0 @: A3 S+ v
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
& c1 `+ x# E+ c9 NMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 u  y5 f. M. u" t8 @
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 Q# E$ r! d3 K( e  oMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( a& Z3 E; g& x8 `) Z* F( O9 `2 t! KMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);% N/ d+ M6 H7 J
}
6 N6 P- B9 ~9 J$ ]$ i6 T) c' p: K- p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 ?% @( I2 c1 j6 c7 x3 C# ^: r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-17 05:16 , Processed in 0.043357 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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