MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8338|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,4 l( ~% v  J" a4 r1 t2 m- }+ U
input mcasp_ahclkx,2 z' n8 C$ Z/ A) n2 M7 ~
input mcasp_aclkx,
9 Z6 k( \- |5 {; r1 C, }input axr0,
& ^! T& ~2 K- f2 B9 c* z& i) I
output mcasp_afsr,
+ \0 A: k9 H4 G2 toutput mcasp_ahclkr,
7 B1 M, B0 E7 Aoutput mcasp_aclkr,
+ d! z( K* u+ L3 P( ]  joutput axr1,# _: Z6 T1 X: k/ U0 h) J' G
assign mcasp_afsr = mcasp_afsx;
0 |9 k$ v! F6 ^, l# ]' G6 j; V9 Rassign mcasp_aclkr = mcasp_aclkx;
  {* E0 i, j& m) w3 Cassign mcasp_ahclkr = mcasp_ahclkx;1 \$ O" b! c: t6 Z  U  C3 H; E  F% Z* ^) O
assign axr1 = axr0;
& }* h+ A- a8 L( ?

5 N1 D) h) y0 p  T( w4 P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) J- W/ h3 O) |- }. |  b
static void McASPI2SConfigure(void)
1 H1 S3 h0 y6 h! s- z( B1 t{
: k( x9 Z' e' e1 {McASPRxReset(SOC_MCASP_0_CTRL_REGS);
; g: z" l9 ?. N9 Y! h+ ?: L1 ]McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 x2 f! b- q# x9 o) v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 J& a; {6 b* c" R8 Q' V, }  x/ i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) p; m: |1 \6 R, oMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; V5 m/ E" p, t; [3 jMCASP_RX_MODE_DMA);5 V7 H; n! q# F: s7 S0 b4 }
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 _; k: i. J9 ~) O- x% r. d' l: qMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( W( T) }. r$ B6 y3 P" c. ]2 q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 u' _( a; T. X& b. hMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  R4 e/ ]* i& \1 n9 p& H
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * }# T5 z; m. d& g# S9 J' w4 k
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 ]* ]) E* n2 u0 C; f! u8 J3 E: r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  ~2 s9 P7 S' }; G: h4 h: t
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% h3 ^4 g- Y  x( }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( M7 p* y" y6 Q( g, w) \, k
0x00, 0xFF);
/* configure the clock for transmitter */. x0 a4 n; t- T- u' M* Z1 u0 R# z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. j7 z5 Y# P3 S$ y  A6 W8 Y6 OMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 u4 r; f' [) P# r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% r3 H, D! ^1 \. K& |6 T- K0x00, 0xFF);4 Y2 k3 m. i( ]
; a/ @8 L* M: ]% y" B: B; P/ i
/* Enable synchronization of RX and TX sections */ 8 j% W/ c  B7 r% g
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 ]6 V5 \" o% x' u, |) y) bMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ L* s, p4 X4 S3 ]3 ^3 A0 Y
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  R6 O/ q3 {5 @% N1 C** Set the serializers, Currently only one serializer is set as+ o. r2 Y1 [4 g& P
** transmitter and one serializer as receiver.9 K! R" J1 m* e% m, j- d5 Q' s
*/" J" c/ ^% u8 @/ u7 c4 `! E5 m% B4 g
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
( {  h" B* p. P7 Y7 kMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
+ b" f' a* k: T9 I0 b1 f** Configure the McASP pins
/ A6 w$ p" I& S* h$ W0 Y** Input - Frame Sync, Clock and Serializer Rx5 H3 y/ F' S) l" G& b
** Output - Serializer Tx is connected to the input of the codec 4 w- n8 F) h# G, D
*/
0 [. Z( u% ~0 @8 pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, \( l# D+ I$ M9 @McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ X! q/ R. p8 J! _/ }
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
; W. N/ N  X2 w" Y  X| MCASP_PIN_ACLKX3 X# [3 l7 \" i1 H  o2 i
| MCASP_PIN_AHCLKX
" t% [9 ]5 Y* s9 f| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: f1 I$ _% v8 J) f
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 q  d& v- R' b) U4 @! U5 y| MCASP_TX_CLKFAIL
8 {  s% @* z) h$ u: V$ J* r| MCASP_TX_SYNCERROR
3 t! f) R' K* M4 l| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ ^( Y% U5 A; ]) \| MCASP_RX_CLKFAIL
! M( d3 I* e! M* b' M9 n| MCASP_RX_SYNCERROR
! Z2 R8 S2 M( J| MCASP_RX_OVERRUN);
' g' t3 K2 F0 u1 O% d6 r}
static void I2SDataTxRxActivate(void)
$ P0 w. R' k9 W{. `; K% J9 \7 U. I% z% f" T
/* Start the clocks */
* s7 Z0 ?' B; N% V0 {7 A, ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);' c% t# y% t/ ?4 o
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: v+ L# L/ S- q, q" D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 _7 ]0 X* W% @( A
EDMA3_TRIG_MODE_EVENT);. i% J+ d. \$ n. z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. X  ~  x! ]( ^8 x1 xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 j8 h- y0 k& R4 CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# l' ?3 q5 d- i) B$ l5 uMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 Z5 H. X( g9 e# o
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 U; S5 m4 q$ m5 R3 q0 q; gMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ C7 h, h* q3 n! Z/ z9 c' GMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 B# m% H' [8 `0 P7 R5 |
}
& H$ x1 d% X% U" {0 W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
: F# D4 W  M) X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 08:45 , Processed in 0.044810 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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