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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10908|回复: 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," C& s: M: W: P0 \! C3 n
input mcasp_ahclkx,
  n! A0 y" h8 Einput mcasp_aclkx,
$ J$ ]/ `& A# a5 jinput axr0,
& w7 s9 m3 w) }% c+ Y# u7 |& T& h1 ]% j% G: G
output mcasp_afsr,
8 N% g% y- w. ^2 Y6 _1 X$ n, V0 ?output mcasp_ahclkr,% h+ _$ l$ a$ {) K7 x  g3 ]: t
output mcasp_aclkr," w; |" m! q; m: Q9 b) `
output axr1,2 s4 Y9 m: s/ D# P0 z8 p! k
assign mcasp_afsr = mcasp_afsx;5 y# `2 g5 k2 ]
assign mcasp_aclkr = mcasp_aclkx;
% F, P3 O8 W! j2 l, `assign mcasp_ahclkr = mcasp_ahclkx;( X' d& H( y& a! G% x, M0 ~) `
assign axr1 = axr0;
7 k$ I9 r  ^+ v) J2 K) _/ h* f

5 m' n, s/ |  E4 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ C' A* B5 P6 y2 a& j# Z) b
static void McASPI2SConfigure(void)
5 i+ U: j7 ]+ C: t& t: |( J{, w1 `+ v% R2 @! X. N# D' v; r
McASPRxReset(SOC_MCASP_0_CTRL_REGS);, g6 \6 }5 y) b) g- b
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 W% h# N: ^4 L: z) E; S! a) X& a& oMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& U5 _' M6 _. N# L* s
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" Q$ s- M( t+ b% ]' B+ }' FMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% |2 q& m; A3 R
MCASP_RX_MODE_DMA);8 P+ T% Z; _; `* O: p
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 {  P3 t5 {$ i" @# p' W" n0 OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ b  m4 f( O0 X0 X! wMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 G2 c, ^* A  o' J* O* J: H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ O& H. W7 a/ N7 A" {/ ^
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 m* N. p6 Z* Y) \9 r" |$ LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: m$ n" ?2 Y1 G) R5 |  T4 g
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 w: z# E- G, z* lMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + A$ d, d5 R$ X
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( O+ X: I. e6 R) p+ T0x00, 0xFF);
/* configure the clock for transmitter */# E; F+ {  Z8 _: d
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' R% @& J$ y+ B2 I2 P: V
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 @* V( b- p& p1 ?; J
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! Q3 n  q. i2 l- c# n& J5 s
0x00, 0xFF);+ \9 D9 E$ z5 n9 U% F& C9 D
, f4 I+ N/ H3 l: w& U! N2 c6 |
/* Enable synchronization of RX and TX sections */ 6 e  Z$ x' E0 v! H  ~9 `1 P& H
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
+ A  w& p6 v) k5 p" ?6 N4 UMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);! j$ O% ?+ M! T  S- P9 p
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 e) x. ?8 y% d* v2 Z/ ^) b# H% J* P
** Set the serializers, Currently only one serializer is set as
0 c" I  I9 u( V9 }3 M** transmitter and one serializer as receiver., Y+ T0 i/ ?: r) U
*/
* \' |4 f; m4 A" n% EMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 o7 t/ X0 p! DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*! _$ i* F; {! `6 J% ^! r' O
** Configure the McASP pins
: U+ Z9 o0 n- Z& w3 Z- i. j2 h0 N** Input - Frame Sync, Clock and Serializer Rx
0 ]3 q: S) M5 S6 Y# Z7 A5 ]** Output - Serializer Tx is connected to the input of the codec . b0 U- W" Z+ g$ a. ~
*/# j0 b& g+ _+ d, V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);& D! @) C( a+ {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& A& h0 H8 T. O
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* C& [, A' g- r6 q| MCASP_PIN_ACLKX
+ |+ x+ X$ M; M9 q3 e& P| MCASP_PIN_AHCLKX1 F3 c' I3 |. w  ^" A% g
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. c' Q' j1 J& r# O8 i) A
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: z1 q' m4 a1 {| MCASP_TX_CLKFAIL $ |) P# }* @( n0 F6 S
| MCASP_TX_SYNCERROR0 |5 E) W6 _5 _- c( b; u- _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 E9 Q1 y3 d7 a! O; y3 W" i$ _1 P7 D| MCASP_RX_CLKFAIL- i" v6 A* `& `
| MCASP_RX_SYNCERROR
9 h, Z3 d3 |# f; h| MCASP_RX_OVERRUN);
9 J$ F7 |8 I! i+ \/ \7 V9 Y5 n) k}
static void I2SDataTxRxActivate(void)
3 K8 M  ]: n6 m! ^+ q+ f{+ m$ Q  a# ~1 O* |0 D: ?2 l) v
/* Start the clocks */
+ d! a! j9 o3 h3 {# X9 |4 M3 zMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 [# \. ]; @" V+ |+ l
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, M( f6 l7 @) w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# P* ^7 q. X% W
EDMA3_TRIG_MODE_EVENT);$ H! N! Z" ?  ^# S( N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' m+ \2 j2 ~0 A$ bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& `) L# G$ K& |' ^& f/ u" A# ]McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 ]" C8 M% B; H" `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ q8 E  E* D6 r% q. ywhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 N# e* f( K; A+ o/ o, iMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
# U- [6 @4 _* R, w4 oMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);. G- l; I2 G" J" l
}
! w# S8 j; Q+ n# I
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 [# |  ?7 n% E1 S' J  y- [* G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 01:12 , Processed in 0.042906 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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