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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12305|回复: 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," q* G/ u7 z- |* I8 R, ]
input mcasp_ahclkx,) x% S) T5 w9 e! Y1 ], X6 G
input mcasp_aclkx,* }1 \) a& s+ f
input axr0,
' G6 T; o  d* r0 r! c6 g, z( R5 n. A2 P4 Y1 F9 C
output mcasp_afsr,8 L& k0 m  I" X# T
output mcasp_ahclkr,  C0 @/ E! K* n5 }, M: P( k" D0 j
output mcasp_aclkr,9 A6 `/ B' x/ x1 _; Y# p, z
output axr1,
' j7 G- m1 v, x0 H. I: s
assign mcasp_afsr = mcasp_afsx;; r6 j# U7 ~" Z0 Y: v! v: T2 R
assign mcasp_aclkr = mcasp_aclkx;
4 C5 _. H, ~* G) a8 xassign mcasp_ahclkr = mcasp_ahclkx;
6 d; e* ~( h% n& D- p+ @( V$ _$ Dassign axr1 = axr0;
5 M# Q* y: v1 W% x. Z# n% E
' X4 k& A+ W+ J! `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) l0 J2 r  h% |3 o2 x5 d. P% P
static void McASPI2SConfigure(void)
3 g/ R5 Q2 E; r4 \, \{
' ^  t( T6 S: j, Y1 ~7 sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);9 d- J4 C  i+ [# l! v' e. h
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 X. V7 T2 @' e% ]8 ~2 U) t1 X# P. ]McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& j& N8 |& f$ D0 N: {' q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- p5 j9 Q% h  @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: ^/ b: _" I5 \- \; P+ h
MCASP_RX_MODE_DMA);) h6 f5 h$ O3 [5 E* b
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ Y; I! N) G4 S+ A+ D0 l6 D8 J" |MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */4 i" U5 n3 M8 x! V" ^. d
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' U  k/ v8 N" {. aMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
5 m, a( L0 a7 ]  ]6 i+ [McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ N  f% h, C/ u) m  [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
8 c! U; _4 ?6 n0 R  iMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" q9 K; `6 @) j( r, b' UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 t7 h; g; O( n1 H0 w( ]- r
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; i: O% r& d2 z; n+ V" m
0x00, 0xFF);
/* configure the clock for transmitter */
) D5 M* N2 G/ f4 w" p0 qMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; v2 ~$ D. c/ b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 I+ L2 D% n# B" F9 A" V9 e: dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! {( n  `6 ?  G; G0x00, 0xFF);
) G' L! W1 e4 J) P4 g3 M
- j- H# N( Q5 H+ _0 Y* s7 b/* Enable synchronization of RX and TX sections */
: i* E; g2 R4 H# y2 m7 Q: t$ E4 H! E# BMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# g) m  r0 o% X& g0 gMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* L  h- w/ y! q  W+ V2 B
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 i8 a( r0 z. i" N( A5 I& l1 n5 P* D** Set the serializers, Currently only one serializer is set as
8 ]- N. f4 d4 E/ _6 {/ d2 i, }; q** transmitter and one serializer as receiver.
% r$ m7 N9 {0 u" X+ q$ \*/
1 c* d- i# |: C; u5 E  E3 mMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 |0 f5 A" B- h) A' h2 pMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- F% r0 b+ D' }" q
** Configure the McASP pins 6 F4 U5 q6 q8 M4 w. ^' v
** Input - Frame Sync, Clock and Serializer Rx2 p- B$ A' ^  W$ q# w
** Output - Serializer Tx is connected to the input of the codec - ]. L+ L" L  N! Z
*/
  z  M( U  J. |0 ^. F) X: XMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 P$ J7 _9 G4 r, ~9 `1 }McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ Y1 w' a1 j/ x( |* ?, F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX  I  E% d( Q6 B- J7 e
| MCASP_PIN_ACLKX
6 H; H- C$ [4 G| MCASP_PIN_AHCLKX
( j* x$ a3 Z8 y& t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 t- y2 n- V* ~2 sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : `/ Y1 o( T4 e
| MCASP_TX_CLKFAIL
0 v" n# ^' [2 w$ D, e2 [1 S| MCASP_TX_SYNCERROR
- y+ x6 s- `8 F4 Y5 C, I1 l| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. N$ w8 S! o. |4 g( g( O| MCASP_RX_CLKFAIL
  J+ n$ ]! q3 U( N3 C| MCASP_RX_SYNCERROR
! S: P; i" a9 u& v: B% T+ A| MCASP_RX_OVERRUN);
. T+ ?7 G" h  |2 Q1 R9 k- u. T}
static void I2SDataTxRxActivate(void)' ^% g, o0 c8 ~
{$ B- {1 ~2 S5 \6 c
/* Start the clocks */
/ @  P  {' p+ k  U) |McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) |  p1 S* Y: ^: c, ?# @
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 ]3 `4 }1 d& j& WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 b4 }  X$ ^7 U
EDMA3_TRIG_MODE_EVENT);
' l4 ]2 I) D* r# p2 _( fEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( Q8 P4 ]& y5 f) W- C* X- |. `
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */& V) }9 e) ?) i2 \
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* S$ k) v7 C0 x' I$ IMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// P+ n) b" V/ D! [
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ T. L2 j3 b. Q1 Q# |: uMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 E% @0 H' x4 k: ?0 A5 cMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);! w7 M7 l1 l! n! v$ g
}

) t. l, U  g2 p- E1 W, Q+ B) U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' p, i1 V# O/ N9 R: F5 N8 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-4 16:58 , Processed in 0.042585 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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