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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10362|回复: 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,9 z7 G8 B# g: W: |
input mcasp_ahclkx,
3 s- u( e6 q2 w* J* l6 F7 Y5 D; P) y4 ^' Iinput mcasp_aclkx,
7 S, j' s. J- d4 Ninput axr0,
0 g1 g& ]- T0 s9 x+ F5 _& h+ T9 a6 h+ t
output mcasp_afsr,
. R$ |" B% f; Z% k( Uoutput mcasp_ahclkr,# v8 M  j0 _9 \+ `3 `) j9 x
output mcasp_aclkr,
; I9 X/ K- W# m1 g0 Houtput axr1,% F4 v0 Y3 U6 `# r
assign mcasp_afsr = mcasp_afsx;
3 c6 \0 ?4 [9 Q9 c7 A8 e9 J$ bassign mcasp_aclkr = mcasp_aclkx;+ A' C1 Z& d  O& W4 m
assign mcasp_ahclkr = mcasp_ahclkx;
& i4 P, \! o7 @1 A6 d* R2 Aassign axr1 = axr0;

% u2 h" n3 b* J% n3 u# N! M+ ]
9 ?/ w2 ]) {3 P2 v" e! J
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. G7 j, l# v" q/ V9 }0 p- W& ^
static void McASPI2SConfigure(void)
+ J7 O" y: }1 a: G5 f{
* h8 K, j3 E$ G; YMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
& U- h8 ]2 F  O, }McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 m- M* Z3 N% \& E: a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 f8 O3 D7 k# P% L0 Z, t# n
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, T8 u1 ], j, g$ X$ u) W! GMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' X1 c* i/ m& }' e7 T2 R5 N
MCASP_RX_MODE_DMA);
+ r! J) L2 }) zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 N( B8 n1 |" ]- }$ r7 R6 l1 `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 L1 Z5 s0 f9 U& E! h7 G# d& ^
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " ^3 g9 c+ I) h) N1 n, i
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);# T. T' L. _( r# s- [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 ?8 Y. E7 n- K& ?  k, |, l8 h  YMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 X. F. t3 x: V$ t' @
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 A9 ^" U+ k$ i) K, y4 Q: LMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& X* b) k8 v. e+ R: j1 C: KMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' j- P# W: f- |! e: J% w
0x00, 0xFF);
/* configure the clock for transmitter */" Q0 G0 F' [0 P) p8 ?
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 r7 t3 l' p- [- m1 C6 j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); * F" o6 z1 n+ x9 A
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 o: F' _0 ^" ~) s8 q
0x00, 0xFF);
0 L6 f( T0 q: E4 e5 I7 R% U7 b: h  R* C$ q( F
/* Enable synchronization of RX and TX sections */
# e8 f/ d- S) X  b- D( pMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' f5 N' X" p) `( c9 a% K
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 w9 D$ x$ L+ R
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' a: w& {: U  m. _
** Set the serializers, Currently only one serializer is set as+ O+ a, t# I) i
** transmitter and one serializer as receiver.  e( s# i8 L4 T$ M
*/
) F# ~% m  `8 O; P" C0 y6 |, mMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 Y: N+ U- v: Y- z1 s) o, }
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 `9 U% k/ i/ t9 |2 r: {** Configure the McASP pins
, A" O. m2 V7 ^- h: j$ ^** Input - Frame Sync, Clock and Serializer Rx
1 f9 Z# c* E& }$ O4 o% p** Output - Serializer Tx is connected to the input of the codec
: {& y) _# U  Z! ~*/$ |$ M9 C0 M! a. ~
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 V- V9 k) \" `8 S9 C4 I) AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 X4 j9 p" \: A( |1 i; L# l7 S' n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! p3 y! R. w5 `2 X) J# q| MCASP_PIN_ACLKX( n* o: g" C' X5 T( q1 I5 x4 _
| MCASP_PIN_AHCLKX
; [  c* v* P, J( K| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! g( K& q/ E+ n2 fMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 i- b  u! A4 x' e. Z: s$ A! J| MCASP_TX_CLKFAIL 1 J* B" i2 t' ]  R/ E& D
| MCASP_TX_SYNCERROR
- ^! M" l4 a6 O| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 {# o) N+ t9 Z( N% i| MCASP_RX_CLKFAIL
" F) E! b8 z7 g+ V# e* s6 t9 F6 J| MCASP_RX_SYNCERROR
% C6 O! u( i- B* j1 F| MCASP_RX_OVERRUN);
1 g& I+ T% B; R, b. M5 B1 I: w0 v}
static void I2SDataTxRxActivate(void)' c, m# l8 ~7 V' h( I  n
{
1 h, ^% Z6 f+ z6 w/* Start the clocks */
. b1 f  r( v8 y; l. ?McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% j& A: p  l  u4 J( MMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 k7 }4 A2 A0 |5 X4 A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ d: u# Q, C3 ]) kEDMA3_TRIG_MODE_EVENT);0 y; j3 h5 @2 P5 ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 A$ W, S5 p+ W4 Z! Q# I3 X
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! N5 o# e7 H& b7 R. L- N, F
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 x& G3 F: W2 ^- J) d
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 S+ q1 V# y6 y2 W* T: \while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# _- y: {  C3 k. EMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 M6 i$ L- m$ a) `' T. _- P5 _McASPTxEnable(SOC_MCASP_0_CTRL_REGS);) R$ g6 U+ S2 s+ }) H5 [
}
- I0 E% [' t% k" \: x! R
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
; q' v" u9 G+ J' @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-4 20:17 , Processed in 0.041516 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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