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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10670|回复: 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,+ L# S) d+ H& {) r% E
input mcasp_ahclkx,' L7 O4 ]$ o' @& ]  y
input mcasp_aclkx,7 Y+ K2 `* T, I
input axr0,
8 `% _7 W* B. d& f+ S# @" V
  }) l5 G- ?+ M2 s' w) Poutput mcasp_afsr,
% O' u6 {% T8 e' zoutput mcasp_ahclkr,/ M( B4 L7 u4 o) Q( r# v9 m( C+ C1 H
output mcasp_aclkr,8 M$ h1 d( |5 [0 @% h6 R
output axr1,
3 n/ K, x: \  Y/ r+ P  y- x" T
assign mcasp_afsr = mcasp_afsx;& @5 h6 y: E; h& k
assign mcasp_aclkr = mcasp_aclkx;
  m& R& V' y% Z! T) sassign mcasp_ahclkr = mcasp_ahclkx;. H, a) b/ O6 j) \
assign axr1 = axr0;

1 T' R$ ?$ v& u" M) @3 C7 k- m- X( K9 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 f8 |" }* I0 M
static void McASPI2SConfigure(void)
% p: n& O( o9 s+ q4 y! ?  j{  M( d; m+ v7 x' n4 R) O8 ]
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 D  c; B$ C7 Z' ]McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) J* G6 B* _: X4 H0 o- B) s" OMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' I& W' n$ v, i" j
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
  z% D9 d, B! o0 v2 N' bMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: H+ v2 @# f9 `+ f4 l
MCASP_RX_MODE_DMA);" F' W1 z) ^* {" y2 O/ I
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# d. W8 V7 B' C5 t) R$ r0 p0 XMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
7 |2 W6 J; e0 j4 a% B  t: }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . Q8 ]( U+ l5 d$ V3 c+ A2 |! y+ `% J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ J: c) j! [, y1 E6 ]% F1 J
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% p/ O/ C: J. f, l4 c4 yMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 q8 P% W) ^; w$ h+ yMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);1 t3 i" S9 |7 A+ `! {
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . a2 ?3 k- A: H0 J  ?7 V. e
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: o& V# y: X( B8 f
0x00, 0xFF);
/* configure the clock for transmitter */2 M4 p, L% j2 B0 Q3 z( ^* n
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 A5 q3 h! z  \' c' H# d* GMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 R$ k+ ^, |% R: ^: h) n5 f7 f, Q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  D) K9 L' d# b" C* A9 J
0x00, 0xFF);* s- `- S( D: {7 C! T6 G( a* z

2 i$ P. K# S) M% \  e' s' Z/* Enable synchronization of RX and TX sections */
' `- R, W; M9 m, X3 L+ G6 C8 `  SMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) H3 R& E  H& b0 p7 P, zMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% N6 u1 g: |. S) U* l1 o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% V( v6 X2 u' w+ G
** Set the serializers, Currently only one serializer is set as$ y% P  ]9 F5 }* `+ K
** transmitter and one serializer as receiver., `) a+ J7 f  B* D. e
*/
1 z( L9 Z8 X' t+ S. X- D! c; ]McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);% v2 e5 e9 @* J: T( |" _% p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& y# @' o3 e5 L5 [1 F% Z** Configure the McASP pins
7 a4 S! w  l; z. l** Input - Frame Sync, Clock and Serializer Rx1 K6 T# v5 _5 y! }6 @2 Z& d
** Output - Serializer Tx is connected to the input of the codec
6 d0 f3 ?' q1 B. e  ^, w# Y2 g*/0 y8 l2 T" [, E8 f9 e) b7 l
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 M, k; S" }' @% [' {! n5 I; {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ D- T* o, h! ]" N  v2 s% ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- y1 B; Z5 f4 ?9 Z2 w| MCASP_PIN_ACLKX
! a1 z. h+ f( a| MCASP_PIN_AHCLKX9 q1 ]2 t+ l+ }7 t3 X2 |
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' R) u7 ?/ ~6 r! x7 V3 nMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 O5 _; T0 [# I& Q- V4 {
| MCASP_TX_CLKFAIL
+ s' j9 o) @2 o# v8 }$ @2 U| MCASP_TX_SYNCERROR" Y; \: j& q( t
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . D0 L5 b7 I) v5 \) u) w
| MCASP_RX_CLKFAIL
0 E% l$ O  J2 v, e) \| MCASP_RX_SYNCERROR   R$ Q( `1 f/ g. w! d
| MCASP_RX_OVERRUN);
8 d- E, e6 V: ?9 x8 s& }}
static void I2SDataTxRxActivate(void)) W  A3 m' Y6 }; r0 l7 q
{. ^* ?! L$ }, ~3 n+ v2 ^
/* Start the clocks */
6 s; i1 B' k( q5 y# eMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 G" k3 K/ N) x! dMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. w% B- b% q5 C  m, S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,- U% I" o. O4 R8 u8 L
EDMA3_TRIG_MODE_EVENT);
- p" `+ Z: F7 a, }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* E! K! w; D( j: \. w7 R' KEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ h0 ?! V( S1 C+ a; h) k& f
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ [3 C) e# \. t/ w5 N7 M. ]/ o0 U
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 j# y0 \- ]* D  F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% @0 N. v# X5 l$ U4 s
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 q4 X; ~3 H) J5 y/ DMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) y' o4 {& [8 P! t0 R; Q
}
* {9 E7 z/ N' q8 x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

1 l- H6 Q) o6 k( h" I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-12 18:31 , Processed in 0.041702 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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