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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10383|回复: 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,6 L1 y! l0 n3 q4 e+ Y/ X$ W
input mcasp_ahclkx,$ N3 s+ J/ O" n! v% X: M% L
input mcasp_aclkx,$ T6 G9 W& q2 O0 @
input axr0,
  U7 {$ f: X' n5 _# k
; Z- N: X. U% S0 Foutput mcasp_afsr,
, n9 m* W5 v' n+ \output mcasp_ahclkr,3 z2 U: E4 p# L$ e$ Q! U
output mcasp_aclkr,  k+ n  B( c; l4 z6 M! ^% t
output axr1,
: H' _9 t* k2 o2 e5 A( g" p* m9 d
assign mcasp_afsr = mcasp_afsx;
" N  d& T$ J4 _; K& {5 T/ t' rassign mcasp_aclkr = mcasp_aclkx;
+ U. V2 D, J. X( r3 z( xassign mcasp_ahclkr = mcasp_ahclkx;% p& |  M6 H% A5 [% x$ v
assign axr1 = axr0;
! x. O6 U5 ?, `) |4 M
, j- L' S2 y  U5 b- v. t5 [& m& o( g, ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 p' u, a' f6 p" |7 U1 n+ v0 k
static void McASPI2SConfigure(void)+ h8 e8 ]" j0 o! _- g
{
9 Z9 n. Q3 h; U1 _5 U  kMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
" ?3 f8 n8 h. |2 uMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, P) s2 V  I7 {7 Y4 N3 u) |- _
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 P7 S. I% m) }( R2 T
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
: H+ M6 O1 U8 c" dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 O/ R  d+ ]8 y% U9 o! }' z, Y9 _! SMCASP_RX_MODE_DMA);* e; h% \0 q2 H0 D: s, S
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; Y0 A, y/ {" n8 ?- x2 N3 [9 N
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& ^0 h1 _; r7 c
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, , _! M& H, z$ k, V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ }# _. i' O% z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, # p6 P, N! b! b: g" B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver *// [1 `% h7 n& C" Y. i$ f0 t, V) @
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ t% ]3 p% v( K, U. w. w- z
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ j" {; a1 g0 H$ i% v8 D' X0 R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- W% o) O2 X& J# B$ h& g- ^0x00, 0xFF);
/* configure the clock for transmitter */
9 @1 Q, m9 p8 A7 D5 CMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 z3 G! x6 C, ^! H/ J3 ^/ o4 }
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ I! L+ f7 o6 p: [; Z% BMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; n# B. |$ l/ s
0x00, 0xFF);
8 G9 r  N! V) w3 G3 H& j% @9 |6 M  F( }. ^
/* Enable synchronization of RX and TX sections */ % \5 T! b& E  Q. Y. Q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, L+ |2 w8 M8 ?7 U/ S" gMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% S2 R+ {( W/ H, W2 VMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. _$ o$ x, u$ f# i0 L( y- _$ ?" G
** Set the serializers, Currently only one serializer is set as) N3 }" z" R% M! h' n8 n
** transmitter and one serializer as receiver.
+ J! P( [. G& Y$ b$ r  _*/
3 S9 N1 N' S* w  u7 b* v$ ^9 i2 H2 jMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 \$ c5 i! C$ i% \8 s5 \McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- P( K) S3 }( x
** Configure the McASP pins & m* }* z3 n* p/ f# Y! }8 E
** Input - Frame Sync, Clock and Serializer Rx* M3 R1 J& R, Q: u
** Output - Serializer Tx is connected to the input of the codec 5 V! [1 ?& x  f7 A% S
*/
1 c7 z* p  o3 l& [9 R: Q* N3 ?' j/ zMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 n7 U; j- W( r; Q; Q7 a9 y( B) ?
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 [6 |% w( |& z1 H6 {* u+ `4 rMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 C+ n: s1 q  M7 P7 c
| MCASP_PIN_ACLKX
6 }: `8 U* [. a5 k0 f: k| MCASP_PIN_AHCLKX; `" D0 W; F8 z3 r) |3 O
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- S, b2 N, v" v* Q; o- l
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 M2 ?) T+ s6 Z/ U| MCASP_TX_CLKFAIL
' b; x4 X# ^6 S5 h| MCASP_TX_SYNCERROR
& c6 U0 \1 n0 b! i4 X/ s! r* J4 J| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR $ w) E9 f; }" s+ S7 A: D0 v
| MCASP_RX_CLKFAIL$ f# W- o1 b8 J  a# b: x! c; D4 L) f! d
| MCASP_RX_SYNCERROR
6 l- I' g# x7 u+ M0 ]| MCASP_RX_OVERRUN);
. q. R( J4 Y' w8 m}
static void I2SDataTxRxActivate(void)1 n! l1 u' c  G$ F/ O
{
5 N, V* C" K% ~/ X/ t/* Start the clocks */
9 P# y6 A3 n+ F+ Y7 ~5 C; b/ uMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 O( r1 A3 K) B: R6 @McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ x0 a( f- ^, e9 ^4 R, hEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 Z& V( Y( b5 o+ qEDMA3_TRIG_MODE_EVENT);
/ G: O: P! [* IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " [' m5 _4 m' o; @/ p
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& s( z: i8 F) X7 \7 ^7 aMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 Z0 I6 L/ t' q$ g  }0 ]
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) N8 \' h( c  O' t: K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */  e3 ^- a" o3 H" R2 z( ~
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
  a- ~" N4 G& C2 ~& A+ ]6 XMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 ~. q8 y0 r$ g7 ~  p, m( V}

$ l4 s, C& u: M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. I6 S5 z- \$ S4 h* J; k1 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 09:48 , Processed in 0.045092 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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