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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11374|回复: 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,
& {+ X# V" N: }6 |2 e1 m& j& u/ ^' sinput mcasp_ahclkx,- R4 Y7 [! l1 _9 e# j* y
input mcasp_aclkx,
, g+ N4 @/ B' A% }, U) Iinput axr0,
# b, V4 J& ~; T$ X1 g, {, z0 ^0 ~; K4 Y8 C5 x; u
output mcasp_afsr,
1 H, |; B' F! q1 d# Qoutput mcasp_ahclkr,( C3 H; j, z  D2 [" V
output mcasp_aclkr,
- r+ J1 F) ?* G. C) qoutput axr1,7 x  r% J8 j7 Z1 J
assign mcasp_afsr = mcasp_afsx;3 Y4 S; [% u1 c7 L# ^! Q8 X8 o
assign mcasp_aclkr = mcasp_aclkx;
) a1 B% C' R* E: oassign mcasp_ahclkr = mcasp_ahclkx;' |5 J* s8 h2 D' h! G7 A
assign axr1 = axr0;

- N! L  O1 l6 g& d5 G, s! g$ P9 |& K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 @. H( n5 w; l/ x1 W% D3 S, K! s/ }
static void McASPI2SConfigure(void)! K5 [- _7 o, {5 M/ u+ {
{
' n% ~+ X" S1 H* P0 e7 DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);3 E8 y' W6 D' n, W: i
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 V7 A1 w' S3 q" kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. O/ p/ Y& n, Z0 Q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; U! X) Q/ m: a1 ?" n( dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) r9 ^& Q! f! w" l9 Z, u7 \# N. @
MCASP_RX_MODE_DMA);
: j- [% O9 R8 @! B6 j/ |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& t( e! k1 M* x/ N3 c* G
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& |' p" M" S% Q/ qMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ `% C0 }( f+ R- mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  t; r# M; {* }
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" m8 u% x: [4 c0 ^1 k: s. a9 ^5 |& qMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) V$ ~' t) j7 i5 a& m
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* N8 |$ S7 z/ Z5 G* DMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . h) |9 ?9 l0 [! P5 O3 R# e
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
1 R# p  \6 Z+ U$ X$ p( g6 x0x00, 0xFF);
/* configure the clock for transmitter */
3 e* I) a3 V$ |9 @) A* t5 A5 g: PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" ~* E- R0 A2 c
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  K4 _" z& }1 F; jMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# m( j& W5 n# ]/ r4 h% F5 X  _0x00, 0xFF);( ^6 T# \( F, T- E; z5 W  q

$ x5 q* \, r1 t- i0 q3 S* f/* Enable synchronization of RX and TX sections */
5 s: \" [/ \! Y$ s, kMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: U( H% t0 v  {( @. jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);) l! l5 N' v( e3 o9 f7 @) Y3 B# H
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 c3 ]5 L0 h0 y** Set the serializers, Currently only one serializer is set as
3 ]! ^, l" R0 R** transmitter and one serializer as receiver.
: Q1 P3 s% a2 M. d$ k- y*/" X7 a& s/ v3 z+ n# B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 D0 N) k( V- J' l( ?( {
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) L7 |# v: `1 F** Configure the McASP pins
4 U0 X/ Q2 |3 e9 X- T$ F; p- T6 ^** Input - Frame Sync, Clock and Serializer Rx
4 j& b/ t* f# ~  Q** Output - Serializer Tx is connected to the input of the codec
: \6 e7 M: f0 v' f: w*/
4 v& R) U" i  i7 l3 UMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: G6 v" }! O) ^! M9 L, ]7 ?7 T
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
3 R* _8 }9 Q0 x: \+ ~McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% b/ `$ _; n: u
| MCASP_PIN_ACLKX
4 a1 n5 ?& _8 z| MCASP_PIN_AHCLKX" m* x" Q# W+ e: Z% f
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. a1 T! Y5 `; ?
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 {. ]6 I: U! A: e" W1 C| MCASP_TX_CLKFAIL + ^1 A6 L  v; X
| MCASP_TX_SYNCERROR- k$ o8 G  j, f4 r, T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( b. l% D( j6 C( L4 v+ }& v# S
| MCASP_RX_CLKFAIL+ ^) C3 ?( V" x
| MCASP_RX_SYNCERROR - T0 k; Y/ \: J# H( `3 r% j
| MCASP_RX_OVERRUN);
$ s2 r7 x1 ?6 K5 U3 G) ~# \) j) Q" [}
static void I2SDataTxRxActivate(void)' m+ M( R  @5 m  v7 G, z
{5 y) |0 s- p% e' U8 |' ]
/* Start the clocks */
, R  `' P3 t% A; M. QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 ]1 y+ P; N& @
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. ~1 T, b9 N$ A1 IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
1 E* |6 H4 c) Z( g) KEDMA3_TRIG_MODE_EVENT);
4 ]1 E3 @# `4 g9 UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + s& j+ {7 ~8 p- i) Z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- \8 J  D6 v  {5 x4 V* sMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 ~$ m3 E' a. j; R/ D
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( o# `6 t  ]6 p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 A) O' v0 S. K2 N. f& {6 i, xMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* B( Z$ I9 ]0 p" xMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 E4 K4 T) N3 P}
! u- a' [8 V( {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
& a2 R1 n  F# F& ]' V% k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 17:13 , Processed in 0.055627 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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