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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10122|回复: 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 s% o1 j# A+ ]/ tinput mcasp_ahclkx,
  k( T- k9 l! C: T) [! @, q% _2 ^input mcasp_aclkx,
. [- U7 a. l. R, minput axr0,2 L% I# G3 |/ u" K+ x+ ]5 x- I& l

5 j: `! _. y" r  goutput mcasp_afsr,
. H4 v$ `, |* b9 Toutput mcasp_ahclkr,4 i- m0 u/ Q& @7 @3 a& ^
output mcasp_aclkr,8 C: B- \% v6 m! J+ u
output axr1,; \. v( [9 J/ p: w( s6 O
assign mcasp_afsr = mcasp_afsx;  V' g* j+ p4 ~9 [' B# R
assign mcasp_aclkr = mcasp_aclkx;
+ h( \5 V  c- p5 z* o6 A/ S: Passign mcasp_ahclkr = mcasp_ahclkx;8 o! S& m( T4 c0 V1 f" }
assign axr1 = axr0;
1 w9 i2 o( ~4 R* E5 l

3 e/ ~: u5 s; M, d2 z8 ~
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ C7 u; i- s* R4 w  O
static void McASPI2SConfigure(void)* `& O( q1 S. I+ y7 C
{' u5 k2 T+ v: _1 b
McASPRxReset(SOC_MCASP_0_CTRL_REGS);1 `. H7 S; S1 P/ y+ S2 V& _
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# W( o$ b' S0 F4 e6 V# S* P" tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 |% X& {) S" |' pMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  @6 X. G  y% h7 D, _2 F1 @$ h
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 u/ |* k# y2 V+ vMCASP_RX_MODE_DMA);( R: \( X3 E5 q) [8 ~" y
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  \" l: n& U8 sMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* q/ M8 r' i& K; F& uMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   t% |: ~( y$ i% P  {( D' X( V# V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, F" A: `/ Z3 u
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. s! T0 O' S$ t$ FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# x- h4 u& v' k. b; S8 T( ^
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( }1 Z$ R7 e/ I' ?. GMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( T# t1 f& u, zMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* l$ N; f8 O/ x1 U. X& x6 L0x00, 0xFF);
/* configure the clock for transmitter */# Y6 h. u0 p& d9 }6 `- n  \5 w- _: l
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 Z9 ~) x& Z) k9 z4 L. P
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & M, R8 R% T9 x
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& S4 ?% K* T% X; A, h7 y0x00, 0xFF);- f  C- j7 ]2 y0 t
+ H. T( `$ y  Q1 f! ?
/* Enable synchronization of RX and TX sections */ + R, H6 T. J* _: n* L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) q- f5 m$ E' I2 b# l2 U- S2 r( uMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);# x" k) Q5 P- h# h# m
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: P) M& W  _+ z/ _, B8 i( d- ?** Set the serializers, Currently only one serializer is set as7 K" s% l# I# I$ o* N9 i
** transmitter and one serializer as receiver.
5 c( C2 y% P+ o, {- W& s6 |*/6 n. w. K7 B' {, X9 T
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, o- [% R2 |4 E4 R' ?1 m- J  b0 hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 F( d7 t( b6 C& j* R** Configure the McASP pins
2 I" c6 U, V" L1 v$ l3 e! w2 b** Input - Frame Sync, Clock and Serializer Rx
  U) L2 [: k! h( |** Output - Serializer Tx is connected to the input of the codec * d; z2 Y& `& o+ N# a2 v% l4 [
*/) f: `* `# _* f* M7 ?5 ~" F( R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 S4 q, N7 x6 I5 ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
  D4 o1 T4 l% x1 M7 @McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. ]* K! i9 X' b0 ~# J$ `& w9 e% m
| MCASP_PIN_ACLKX: i8 B  B, K( S& ], Q7 a
| MCASP_PIN_AHCLKX
0 P9 k' g- e* u* v| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: N" y( x$ T2 _7 \9 X! }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 Z4 `+ T, {. E) q; i| MCASP_TX_CLKFAIL
- `3 k8 X' V0 X  Z| MCASP_TX_SYNCERROR
: o2 X/ d* K; B5 `- d6 v| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, n2 p4 j& W* F4 j) t- h) J| MCASP_RX_CLKFAIL
3 C; M4 n" I3 n5 u| MCASP_RX_SYNCERROR
+ e( x, `- B" G2 F# D| MCASP_RX_OVERRUN);
1 ]# g5 c7 S6 C}
static void I2SDataTxRxActivate(void)
5 u: X9 V" l& x{
" A: M5 T" F, f6 J( O4 X/* Start the clocks */! b3 Q3 F9 }3 A. v/ W, ?6 T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! T3 ?  _3 v& X: @, k1 ?, S5 B/ `7 \
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( Y& F5 [5 D/ x: J( H
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, v2 r) U( k$ E" D1 OEDMA3_TRIG_MODE_EVENT);
1 c( g. j9 i& J5 K  ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' k8 i+ x- f/ e
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 o8 s" K. ^4 {0 V$ @) _0 nMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ u4 b: I9 I% f& c8 O
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 c& O3 z" }$ U; |0 y+ j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 s& w% g7 o% |, C2 o3 mMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 p: X2 C+ F$ [$ Y9 V  O" B( O
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
8 |: M3 R9 g" X( ~8 @' v}
# b" N& t, x" n; k! r( M* X! v7 y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" O0 z( M' H* J( E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 11:07 , Processed in 0.052406 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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