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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10825|回复: 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,
/ d7 C1 H+ X& E4 y- c, A4 Rinput mcasp_ahclkx,
) S1 @9 |' T* n$ i0 D$ z6 q. Binput mcasp_aclkx,7 T- O1 u3 }1 C* l  U; D7 X! U
input axr0,
! x8 l2 n- E6 `9 s5 N7 L
8 v1 a, i( r# C6 d1 n  Noutput mcasp_afsr,0 T0 g; V1 A) R% r" I5 I4 g
output mcasp_ahclkr,; [+ D0 M- ?8 p6 k% a
output mcasp_aclkr,; f+ {) J( r, \% g
output axr1,. f3 z! A( A0 C/ l8 b  ~7 [; g
assign mcasp_afsr = mcasp_afsx;5 w# e8 @6 F! n1 u/ [( l) `
assign mcasp_aclkr = mcasp_aclkx;" b! C: k: V, Z# ~: c
assign mcasp_ahclkr = mcasp_ahclkx;# L/ y2 O8 Y$ F
assign axr1 = axr0;
9 Y& w+ e& ]7 S  e6 |) M- ]. `  \
) _5 T/ V0 H  L
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( I3 ^8 I# Z5 E, A
static void McASPI2SConfigure(void); r( C4 K, |% G! C8 ~6 f4 \7 `
{
4 x% V- I$ y4 `( t7 ~McASPRxReset(SOC_MCASP_0_CTRL_REGS);$ R  {" v! r0 J: w! y1 t) `; `  |
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* }0 E$ o1 [! w( r2 @' h1 {- d! J! b
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ w) q1 [& R0 ~6 T" E6 Q: i% AMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 u! S4 C( _+ e9 D& L5 i7 jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- B  a: t& ]8 t8 R+ ?& l5 l
MCASP_RX_MODE_DMA);
9 i7 d/ b  [* x: t& [/ t% u- UMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. H, Q; M- Q: Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( }- [! W: X  A
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' x, S' X7 K) `3 L( N  D$ UMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; B9 w9 W8 ^1 P7 ]
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 f9 s! i* g$ {1 sMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 c7 @' `. h) i* {6 o  V# @7 a, R" z
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 \; B0 }- q$ K' b, v. V2 B
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 r, Y& J, P/ y7 m; tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( o" ~& |- t2 C2 P4 n: l' V4 o
0x00, 0xFF);
/* configure the clock for transmitter */6 X) N% V) l, ]- x* k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 C1 R1 T- U" F' e' `) FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 e1 R% l" f' D- s" F" |  A6 eMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' Q% g( E7 F% d& n5 k0x00, 0xFF);
! X8 v; q# G6 s9 x* @) j8 T+ m/ j" {
. x6 y1 g2 B3 x- l5 b$ ]/* Enable synchronization of RX and TX sections */
9 C  o% B% [# p9 E+ u# CMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) Q6 Y' O' ]2 W% I/ {, `
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 a6 ~& k( h& v5 @7 Q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' e& T7 S4 P5 I- E/ {- l. G
** Set the serializers, Currently only one serializer is set as$ d1 o3 }" r% u, x: w
** transmitter and one serializer as receiver.
7 i! H1 h' ^( U7 W3 g*/4 l4 ~. h  N1 ?( J& o& m- e
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% X7 r) i- G# J$ {/ e5 `; BMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: F; T+ `  g2 Q
** Configure the McASP pins
( A  b4 s7 x* ~** Input - Frame Sync, Clock and Serializer Rx
$ R8 U4 M' K; R# L0 k# l" J+ e9 H** Output - Serializer Tx is connected to the input of the codec
4 P. R# n' M) _7 \*/
  A; u! G$ T; gMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  B* \6 H. ^  a+ pMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 a; E$ i, v% L* ?# }McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX! s. n+ `# k: X% b0 q4 t
| MCASP_PIN_ACLKX
0 _' _& n* m" w, g! \+ ~1 s- B| MCASP_PIN_AHCLKX
+ B2 `3 o3 }  d+ C| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ j8 K5 m  }- S# i
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 s; T! F# l1 F; V0 {( C| MCASP_TX_CLKFAIL ( S, |0 N- Y$ T
| MCASP_TX_SYNCERROR
4 |& E. Q0 G/ [  c: M| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 8 @/ Y) M0 {3 Z5 q
| MCASP_RX_CLKFAIL
' u1 \8 K' j4 N; m, e. p% H| MCASP_RX_SYNCERROR
3 N+ `6 Q, P5 i# u| MCASP_RX_OVERRUN);* X# N3 ~) S7 u9 o. L; ^% E
}
static void I2SDataTxRxActivate(void)) ?& r% x9 `( n% P
{
5 @' S. @/ g# B' }: y/* Start the clocks */+ y) N' P, o3 t
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) w$ s6 w' Q1 k( S) _$ s7 R
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) a1 c0 r- z4 M6 f1 P/ R9 _. |5 M$ S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  I$ w; T% s! y# e% b
EDMA3_TRIG_MODE_EVENT);7 V/ C: V% h; s8 E, Q) [7 h5 ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, `0 J$ z; s0 m, F0 ^, f, fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 h! g+ _: {# L
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);! H  v1 c) \. T6 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" j* J. T5 O# u, Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) C2 P! u# z8 b+ k- M; W3 y% n
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 L; _7 U6 S7 z+ wMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 ]: v5 x7 x) m+ v* V}

$ Y7 |. \$ e3 E0 j7 \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" S/ K+ V, D5 J! L1 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-16 21:21 , Processed in 0.039457 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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