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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13019|回复: 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,5 `& y( f+ m. v2 k( K
input mcasp_ahclkx,# O; p5 d. }5 M# @+ Z' f' h
input mcasp_aclkx,* J+ J" h! R5 p" w0 i) v2 }* P
input axr0,- v5 W$ H4 z6 Q, {
7 a$ Q$ v8 a, b1 I1 `+ k
output mcasp_afsr,
' W* V& B* j% T; n  J5 E0 Toutput mcasp_ahclkr,: M5 C& p  ?/ l- x$ V, s" e) L
output mcasp_aclkr,
# F' |$ R9 p# _5 }9 aoutput axr1,& D& A9 n' E0 }. ?7 B
assign mcasp_afsr = mcasp_afsx;- w, a- |$ f3 d, I# m
assign mcasp_aclkr = mcasp_aclkx;
* j5 z3 ^6 a6 o- Jassign mcasp_ahclkr = mcasp_ahclkx;* D7 B& G8 @+ N3 _8 H3 r
assign axr1 = axr0;

; C0 t; A+ a6 U5 V) L2 Z3 e% s+ n; U- A6 ^0 J0 J
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 r3 Q  P# `, e' F6 O
static void McASPI2SConfigure(void)
+ B4 p  T# _& v{# P7 o; k1 V+ Z6 P
McASPRxReset(SOC_MCASP_0_CTRL_REGS);5 D* @! }9 e" x4 e
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 m; Y; S) a+ F, ?; E0 D) S2 u- b
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
& m& J: Q9 o5 }/ iMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 x9 `! a( W+ `3 k1 n/ g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 m# `) p' J% d; ~7 `MCASP_RX_MODE_DMA);) ^( c5 ]2 ]6 u! ?  @& P6 {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 A3 o, m% s% e' {7 LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  F5 j! k7 L, w& W. z3 H
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# I0 I5 R& A# [! Q+ vMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ p- h( o! l9 Y4 \" `8 d* G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* X2 A; D) @+ j1 e1 f' MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 F" ~( }: C( dMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" f0 U8 N1 N# n2 UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
4 G2 o1 `2 ~/ p' XMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 E- _. U. l( r0x00, 0xFF);
/* configure the clock for transmitter */' x* u4 d# P2 J8 p. G& k" F9 p' Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 O+ F1 b5 P, q
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. B9 Z4 C6 y( i2 W# ^) xMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! u" p& B8 y/ H. g4 j& \
0x00, 0xFF);
6 C" f5 ~" q3 J3 J4 _( C7 J2 J" I6 E; z0 m1 H3 V9 t! B
/* Enable synchronization of RX and TX sections */
) C& N( B7 `: L6 u" vMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 p; ]- }' \1 Z( d/ MMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; o4 z4 u7 N& M! }
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 [8 ]9 s* a4 l1 g3 g" l' J! a4 Y& e5 i
** Set the serializers, Currently only one serializer is set as
2 Z  `4 k' N  r/ A* Y' K** transmitter and one serializer as receiver.
6 }  ?# S2 ]4 j1 ]*/
# x! }& g' \5 {+ @( Z5 K) W: wMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* `0 i+ x2 i% e% Y& O4 ^McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ H9 q/ F7 B! P! Q$ o2 n" X- T
** Configure the McASP pins
' n; z4 X$ p/ r; L** Input - Frame Sync, Clock and Serializer Rx! C$ D2 k, l  ~3 W% |$ B$ g" Y
** Output - Serializer Tx is connected to the input of the codec
9 y. b/ [% |! ?* d) O  P. m2 Q  E- K*/( V! m5 `5 D  V% K
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! Z. u/ T. Y2 O# HMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ X0 P9 H; s6 G; Z8 u7 ~; QMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 H) k8 O5 R3 c" o4 {: w| MCASP_PIN_ACLKX
0 M) t) u/ y# L! r3 ]| MCASP_PIN_AHCLKX
" q+ e8 Y  {3 L, M  ~+ ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 s# F0 A4 C1 b: B" BMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . j  S! l* g( A& L( C
| MCASP_TX_CLKFAIL
5 j+ t! J% V! @| MCASP_TX_SYNCERROR
- `3 I1 @3 n& C/ A| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' g9 r" u8 u; R! B- C; t
| MCASP_RX_CLKFAIL
2 ~  o6 T1 e8 h9 f# r| MCASP_RX_SYNCERROR
* K, g( E& q5 \9 Q3 N| MCASP_RX_OVERRUN);
5 x  n( V2 ?* [) k5 g: T( [}
static void I2SDataTxRxActivate(void)4 B/ h# Q: k; N  P4 r: F2 [. y' o
{
6 z/ T! W0 R5 N4 d/* Start the clocks */* ]2 c% H' c' L2 i! a5 c1 b% l& a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);' m% e  x$ o3 ?9 _
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 L4 Q; b% z* G& ]' j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( C$ u7 D" W- E2 D4 `. r
EDMA3_TRIG_MODE_EVENT);% y: C; m; v, X9 n- J! V
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - {& v( P" N) x" f- w1 q7 [3 I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 y$ }( A2 C. M* `
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  k  K" J& P, V9 R7 X1 ^" M
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 _* ^8 D* E: p4 L0 m: cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# S" t# l3 O- [% NMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 S$ s5 ?4 r' K# u3 l" y+ M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 b/ t$ O, ?7 C! Y7 f# Q
}
- C: a8 l& r! o( ]# l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
; Q6 R' A0 `) s1 o3 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-8 08:30 , Processed in 0.041527 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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