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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10549|回复: 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,
, g# o9 p- Q2 E4 |input mcasp_ahclkx,
) a+ x9 z( W+ m6 binput mcasp_aclkx,
+ v" Z9 _0 H. J8 k& Linput axr0,3 Z5 P* v$ n) m2 ^& i

& x; v: Q& ~+ r9 g" T6 b: r, ^output mcasp_afsr,/ b' ?) r% o: ?# o1 Q- J1 k
output mcasp_ahclkr,
1 I' B- K5 [/ C. Voutput mcasp_aclkr,, ?) O  y& C& Y# s( s/ X
output axr1,. ^( T1 @1 ^* _
assign mcasp_afsr = mcasp_afsx;  `/ o: Q# F( B
assign mcasp_aclkr = mcasp_aclkx;% z8 T$ H' G  ^4 h( U
assign mcasp_ahclkr = mcasp_ahclkx;- U4 Y- q* L" H# j- b* y7 o
assign axr1 = axr0;

' g8 g3 ?3 ~' O7 y  s9 F0 w- j* J
6 Q, |5 |- l: M. ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. k4 p  m( E, A* ]
static void McASPI2SConfigure(void)
6 {8 V- b" b: k) ^0 H- t{
3 O8 n& u. ?$ w8 P" p2 ]7 k' dMcASPRxReset(SOC_MCASP_0_CTRL_REGS);5 ~& t  b. a+ O- {& k9 R6 p
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ f; e2 H% H" q- q3 t
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
3 S* q% x. v% X/ l* v1 J- Z4 CMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 _8 W& G7 r9 _
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 N/ Z; o* [2 Z; C* \MCASP_RX_MODE_DMA);
3 k9 `  ?7 a  ?  h) G& T7 BMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. W. u. Q4 B/ ^: rMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& q8 K5 g# D4 f7 P
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, , R% R; T) e7 r- |
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& G* C& Z4 l' {3 P2 Y' w& Y* B% MMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 u: O8 [* N* m* N4 _
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# u* _5 o' t  Q5 }6 R
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 c6 ]2 D% b3 F! d6 e% r( _McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : i7 Y8 S7 W; u0 w: i, @
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- P+ g; e7 m; l, Y0x00, 0xFF);
/* configure the clock for transmitter */6 Q* X! I* A6 |  p& x$ O% k0 s3 X
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, i' c) y( c4 _5 FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) @% o$ H  r2 z' n1 D
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 _, ~  i) W8 b. q
0x00, 0xFF);
6 ~; A1 g% Z* D( f# T& r7 o: V: t- p' c( @3 k5 ?
/* Enable synchronization of RX and TX sections */ , U5 c/ I" Z. ]. w: \# @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  L' Q# l9 K2 z, G! C
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ h. H8 J6 @) l! ?( j6 V2 UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 T' Z! E4 @8 ~- v) N- Z- Q* ?8 j
** Set the serializers, Currently only one serializer is set as' F% N$ u1 ~& t6 T
** transmitter and one serializer as receiver.5 X: \7 K: [/ \4 R) l4 S
*/; D% o3 h0 J5 x
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  X9 N% y& W$ D3 I( D9 C! p. {6 B; z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ n2 O; i( X8 }- P% W
** Configure the McASP pins + t* ?! o& M2 o" H
** Input - Frame Sync, Clock and Serializer Rx* M; |$ S! e* M3 H; N
** Output - Serializer Tx is connected to the input of the codec
8 S) r9 B' w! k( l1 |3 p% p*/
0 [% K4 {( [+ l* b% pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" b* u% G3 O9 Q& x7 g9 y
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* ~6 I8 q) F, ]) qMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( y5 T: h8 b5 C$ c
| MCASP_PIN_ACLKX
- B* m& P0 z# _; q1 X9 S- ^| MCASP_PIN_AHCLKX. G6 A% ?: r. l1 J3 c& v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 d; }# b2 A. H+ q3 V! `
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- A6 x! F, y& i| MCASP_TX_CLKFAIL
2 p- C% `4 ?2 F  z* O| MCASP_TX_SYNCERROR
5 Q5 ^& m$ `7 U7 |7 R  W& L9 B| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& {2 [/ W' v/ I0 A' e5 v) h| MCASP_RX_CLKFAIL
3 o4 y+ O# p* U' [6 g; X2 J| MCASP_RX_SYNCERROR 2 g8 P' \' o  Y* W2 ^: T8 l' N* h
| MCASP_RX_OVERRUN);
: k, q6 ~0 u2 b% L% ?}
static void I2SDataTxRxActivate(void)
0 n2 q. N. w9 K% E4 B- X+ r) O{* U& Q4 I- j$ R/ l9 O+ L! a
/* Start the clocks */* _& r! ^; P$ A
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 q0 H; B+ r8 x) B6 [) A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* F/ S8 ?8 I% ^6 x' i& y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( H# ~- D& x* u1 I8 gEDMA3_TRIG_MODE_EVENT);. w9 R" e/ T  q7 v) R4 k% q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( X5 N* a2 I- R/ ?: [% H3 sEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: |, f5 e  q% s$ B& V$ h
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 F' @$ j/ J+ a* D' E
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) w) c3 T8 {4 Bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 K' i0 U, v. j0 c: j7 K5 V; Z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 F* Y* t8 k6 o/ z* L6 K/ q- T. @
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
5 b4 _' I: f- H6 S4 q8 r8 P0 Z2 g  Y}

. _' u/ d5 i/ t" N4 k0 O1 n  C  B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! |, j7 g, m1 i- k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-9 13:16 , Processed in 0.039939 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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