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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11330|回复: 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,
2 L' }8 Y, ^7 \& q3 R7 y( cinput mcasp_ahclkx,( ?5 X1 V4 J! Y$ i* J+ ]2 g4 S
input mcasp_aclkx,
1 \# `  y& r# K) ~! ^input axr0,
# a) E* b$ y/ p% @1 l+ E3 f) K
  m5 I; N9 ?% V: |output mcasp_afsr,
, n4 D6 Y: @7 |* j( {7 @( E3 u+ ]8 E8 soutput mcasp_ahclkr,+ [4 j0 m' M" M# a6 I2 x
output mcasp_aclkr,  C' R0 \( D3 U
output axr1,
! \9 h) x' \# _$ t: ^
assign mcasp_afsr = mcasp_afsx;
2 O; ^( p& q3 ~9 c  X$ u1 h/ A  |assign mcasp_aclkr = mcasp_aclkx;
" s- ^- s6 g8 p+ i0 \6 Zassign mcasp_ahclkr = mcasp_ahclkx;, G7 F  P3 Z; _0 V  ]/ i
assign axr1 = axr0;
% E2 X& P: {" }! G
* u9 w4 q, K( H8 z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

0 k0 v" F* M( D* O* z! y3 p
static void McASPI2SConfigure(void)+ ^# `) c# d. C6 R& s! A1 f8 f4 {6 |
{& U8 ?! T, U. r4 U" i
McASPRxReset(SOC_MCASP_0_CTRL_REGS);( X# ~- {/ \; G, J# _
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 M3 V# t& z" l2 Q+ `McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 c1 ^9 j. B0 t7 w, [2 d. nMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 F8 d2 D" w& K
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ B9 X$ n  B  C* M: ^& d) FMCASP_RX_MODE_DMA);' Q# K9 L* r; M) M9 h; [3 s* H% Y
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' M6 v) I4 v( a9 B- u- ]
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" l+ M" u, m* C; ?! O7 ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" d+ d+ D! n& l- X) |5 {. zMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 S9 u+ ?5 V) s, o
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 D, A& G( p' D4 ]' Q7 {MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, ^% o- g( W- l4 r# u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 `5 Z) V# a/ fMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 I8 p$ I) y! N3 ^, eMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) \# c, J! ]/ j* Q4 x0x00, 0xFF);
/* configure the clock for transmitter */
( ^% V  u" L& G7 |& lMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' U3 \" D% S+ c- y# s2 v' ~
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! q5 ]8 K7 U; A
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: n0 @4 z7 V5 g; P  B0 r
0x00, 0xFF);
) p* `* D% j. n0 J) l) o7 r7 F6 @& G& A" M
/* Enable synchronization of RX and TX sections */
; r$ Y, |5 Z. y- Z5 qMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' m- h& L+ K4 D+ ~" XMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 b0 L5 z- ?5 x- v6 DMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- A7 I8 b% ?3 T+ \
** Set the serializers, Currently only one serializer is set as# {. }; L! ]+ p- D
** transmitter and one serializer as receiver.' k: L! F4 m) ?% }
*/5 q5 H  ^4 A& ~0 e! ]0 J
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! E6 H. y6 a+ E3 G$ }' J
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
; t4 x) i. D+ `4 U* Y& m9 [** Configure the McASP pins , `# W4 V5 e1 C) M+ f1 Y
** Input - Frame Sync, Clock and Serializer Rx
/ l- o0 [1 K9 k/ D** Output - Serializer Tx is connected to the input of the codec $ @: l+ I, a" p7 z1 O
*/
$ l5 p# ^, n( R; B6 O. W9 A) J4 F+ R9 }McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" p* F# n' m& i: V, C1 `' q
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ T$ p& k& K' p% P( S- R: S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, ?" |: Z1 |6 f) t| MCASP_PIN_ACLKX! g! b  z4 ]! B2 W
| MCASP_PIN_AHCLKX& [7 p( R5 v7 H4 ]
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 B. a0 q" T3 Y/ k& }7 ?1 KMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 S! R* \4 |5 K1 ^, M2 I! l, u
| MCASP_TX_CLKFAIL 3 S$ i# |' B. L8 M  w+ L$ m% S
| MCASP_TX_SYNCERROR
8 m4 r& @/ j+ a: t( V, ~1 R. i| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & n$ U$ P/ a8 S. g: C
| MCASP_RX_CLKFAIL
% L4 L$ H7 p# Q. r3 f| MCASP_RX_SYNCERROR
0 J  w5 a6 m3 ?4 {  e: @' F| MCASP_RX_OVERRUN);
! q, S& i$ y* L; _( q! o7 \}
static void I2SDataTxRxActivate(void)$ d7 H- r  M8 Z
{
- ^0 E# ]" T4 S9 d0 Q1 U' ]# n, H/* Start the clocks */7 c: V: L1 K0 w7 ^% b- z( \& F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ g  k4 X4 e% C+ C7 b" A1 U% r
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 ~. i9 y# @/ |/ R# a: c
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 Z5 q" W3 `" V0 s3 oEDMA3_TRIG_MODE_EVENT);
* r4 r9 e8 t: u: OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 O# Z$ j& W4 U% w: J
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 D" B+ f- B( e( CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 b* h9 d+ |7 I" _9 f! mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 k' @! }1 S& _6 r4 \& Q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 B, |3 ]( U  W+ s( l% ]
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; Z- i8 D9 P* V! g9 w5 mMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 M: r; S: u- Z( K( B}

4 b1 ?' Q9 E2 [6 z' r
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; e* `. E' ?5 n1 _7 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-2 12:50 , Processed in 0.042070 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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