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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10086|回复: 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,
$ v* p3 C; v6 K  ]- ^input mcasp_ahclkx,
, [, D& h+ @0 x+ J" einput mcasp_aclkx,5 G* d7 R0 b: D
input axr0,* N8 f. P* Z( ?

! s3 C* y; f3 w4 ]  ]3 @' Poutput mcasp_afsr,8 K, g# A! p3 w) z
output mcasp_ahclkr,, X) D4 x; h% j) D
output mcasp_aclkr,
; n) a, B+ J( ?( A- Q+ Routput axr1,4 p, v* Z4 v: A: l  v% @6 o
assign mcasp_afsr = mcasp_afsx;: P9 b$ _( M2 @" e
assign mcasp_aclkr = mcasp_aclkx;  H4 _7 I8 C, @) |' ]
assign mcasp_ahclkr = mcasp_ahclkx;; ~5 C( H! s$ y+ }  E
assign axr1 = axr0;

* H' [0 |/ c7 d. N0 A: A; e2 V2 e7 B/ W$ S4 [
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* e  e4 u! z: o& x( `# P3 ^( k* P/ w
static void McASPI2SConfigure(void)
! y* r' p+ V1 }{
' [5 y5 C: x* J6 @1 [: ^- }6 rMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
  H2 B8 X+ n. ?( q. V8 NMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  S! B. w# P% v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 I8 M; {6 S* o( x
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */( i7 f5 _; ~' `
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 `! W: F4 {9 [) `/ c
MCASP_RX_MODE_DMA);1 E+ _: @  I, ?9 f5 |! H
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 _! Z/ X% [; m' QMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' ~+ b  ~) Y. ^! ?! O9 mMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' ~) h% z& k! J4 |, z. |- _MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 T9 Y  V+ ?. H, \6 r8 Q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: q" i' `' j3 |# U3 c, RMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
$ H0 H* S( v% Q: e! Y- kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 r( p5 K% e5 fMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % F9 o7 N$ u+ J2 u3 p4 y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ j* c2 i- O% F6 ^4 N0x00, 0xFF);
/* configure the clock for transmitter */1 L1 M; b4 K' k" v  |# z8 i- f* L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( l9 w$ X; w1 r: d# I/ h. r
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! u3 o  K& i; F( H$ W% yMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) y4 S7 _/ G) Y9 b# L" N; W0x00, 0xFF);. n' {6 v2 e- i4 M. y' ^! O

5 {1 B) b* z* ^# d/* Enable synchronization of RX and TX sections */
; V' R, y( i, ^- m" B9 vMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
+ J: X4 V6 q' PMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
, n& {! e) X0 P5 D; aMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& c, h8 n2 O( {+ R4 S8 k, `
** Set the serializers, Currently only one serializer is set as6 [3 m9 m3 x/ M
** transmitter and one serializer as receiver.* B% S% U: ?9 C; \& B
*/
- t4 v2 c9 Q% t6 v( SMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 B3 q- N. Q# R, B  U3 ?% X: ~McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 p5 }0 G6 f; [  X** Configure the McASP pins & Y9 {+ A2 H) Q1 u. A
** Input - Frame Sync, Clock and Serializer Rx, ], l0 v2 g- r) q* g' Z
** Output - Serializer Tx is connected to the input of the codec
% f4 G9 c- O% `. V*/
  I9 G3 a+ }3 I: |* x! ]* x! sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 o" I0 Q3 c7 }1 G) C8 c; ?
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
- J2 Y* w( t4 d  s6 B7 ?) \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ v$ s& i+ g5 N& v" T, k' [| MCASP_PIN_ACLKX, Y! ~" D, W% v7 J: X
| MCASP_PIN_AHCLKX; O: @9 i; B) E" \% `( ~0 V
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! J- [" M: D0 c  ~5 eMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( R7 u, k( o" N* f1 B| MCASP_TX_CLKFAIL
2 T7 {; \/ i; o6 l% [! G. o6 I| MCASP_TX_SYNCERROR5 J  @$ E  B; u# @6 G' [2 o
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# r* e+ B+ C4 q| MCASP_RX_CLKFAIL5 X: \  T3 ?' b
| MCASP_RX_SYNCERROR
+ i5 h6 c3 O! E- V| MCASP_RX_OVERRUN);
0 F; u$ x$ E4 ?  s' W}
static void I2SDataTxRxActivate(void)4 z: M. b+ Q* o4 q. e0 D( F/ s
{/ b! ]9 _! Z/ C. r1 N9 Y" Z
/* Start the clocks */& b$ I7 \' w$ k
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 c- g+ p* w9 S
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 X: b9 i( Z1 K6 kEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 \" N: `. L/ Q3 oEDMA3_TRIG_MODE_EVENT);
* H% \: G4 x6 L- {+ r' LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & r' U# L# b/ K1 q3 O2 O: I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 W; g$ A+ ?% pMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ r4 Z* b9 D/ f- n! UMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- `/ a4 c$ e5 Y8 g; }. f' ~" z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* C( t3 n5 ~7 T4 GMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& b& E: w' M6 n# C; @4 j* oMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
2 h! K& ?/ g  \7 @! Z0 V5 X& i- N) y}

4 l* B$ h5 E, K4 O: ~/ a" \' d
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ E: |7 G/ J8 P7 X- _; p5 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-28 12:08 , Processed in 0.038642 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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