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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10377|回复: 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,
4 U7 C5 u& P$ W1 Q( [input mcasp_ahclkx,
' r$ ~  Q# T3 m* y/ einput mcasp_aclkx,
* `. ~9 |) |' `input axr0,9 Y" c% j; m+ f6 U0 {3 Z
8 ]3 |+ M: U" ~( b4 d; q$ S
output mcasp_afsr,( O5 l% x& \% \1 ^& u
output mcasp_ahclkr,0 @1 _) r2 n1 d
output mcasp_aclkr,8 Y2 R5 e# X5 ^& s  E5 b
output axr1,2 [& W/ K1 G! N3 e( c
assign mcasp_afsr = mcasp_afsx;+ T. S% [" b+ c$ Q3 f( {3 R
assign mcasp_aclkr = mcasp_aclkx;
) s9 v/ t1 l$ i3 V7 Dassign mcasp_ahclkr = mcasp_ahclkx;% C& _3 G" v# {: r
assign axr1 = axr0;
: ~: t5 A5 G0 ~7 ^6 g* q4 H

) @0 X) v# \/ Z$ M( Q% e
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  l9 l! T- K% K  Z0 R8 h
static void McASPI2SConfigure(void)$ w9 e) ?6 m& `1 d  {( l# Y6 }. s
{# O: X5 w* M" s- M6 d
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 K2 M, R9 w# a1 AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* s$ @: r# f2 Z3 Z! w# V1 `( K; tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 q( J8 y3 n' e+ ^4 f/ c" x
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; Q2 P0 ~8 j/ R0 L: n. Y( sMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* v7 \* T  N7 Y5 L1 g1 T. JMCASP_RX_MODE_DMA);
  k9 |/ H/ E" p: t$ JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: r( \" ]4 H% E. Y7 d
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  e  |. d, `8 P. `6 }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* q: M) u: B% r) x, S2 e* p% W+ mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. u3 M4 g0 G2 |/ ]: _
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " h" ?$ Z2 L8 u& {# g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  e3 @9 N( q( _  m
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ t& B* a( _1 C9 l2 }
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # k* w" _0 U6 A: w1 z8 ?
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  M/ c; D7 g6 X- P0x00, 0xFF);
/* configure the clock for transmitter */7 n  ~& ~. A  I1 ^3 |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 \0 Y4 ~* ]1 m+ j9 Y' U; fMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / Q! _+ \2 ]/ \' V
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 B, O" X2 a0 j5 [1 D
0x00, 0xFF);
: M$ d/ T) l! S9 ?/ _9 p/ o0 g* F
/* Enable synchronization of RX and TX sections */ 9 j0 o' p' X& h4 A
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& H, F/ k; s5 A6 C$ vMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. o& w/ @, A( M3 PMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*: C+ v$ t7 J; S& v3 G+ Z4 P
** Set the serializers, Currently only one serializer is set as
7 W* Z" E) s2 f5 c/ T, l4 _# A5 U** transmitter and one serializer as receiver.
  ~8 ~+ S- Z' p0 A0 n# y*/
8 X$ `  N$ W8 \0 IMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ e& p7 c+ p$ Y) _6 V
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ d! }* e: d3 m8 \
** Configure the McASP pins
  Y& g" A/ M; w** Input - Frame Sync, Clock and Serializer Rx
9 s7 g3 ?& O& P% j** Output - Serializer Tx is connected to the input of the codec ' q0 U& S$ i- f( T& W1 U+ i
*/$ N2 @2 V+ f! y* p- a% V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 ~9 I# D" O! X) c
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! w4 q& ?/ k9 S, q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" B, U8 J' D- M  Q: @
| MCASP_PIN_ACLKX
2 w" o0 p; _+ J+ r; F& L| MCASP_PIN_AHCLKX
  U. b4 g) F  B/ W$ E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% j% x; F, {/ z8 p5 B( B2 [' w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + @/ C" ]& P0 y% \
| MCASP_TX_CLKFAIL ' V3 R' V4 X( M4 e% P# F
| MCASP_TX_SYNCERROR. Y9 S& Y; }3 {5 j7 y1 C# S4 ]0 i
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ Y3 k/ ^% @) ^, |4 M# ]6 T* f| MCASP_RX_CLKFAIL* D' e" O1 f% `  n* J5 Z& ^
| MCASP_RX_SYNCERROR
( e" v7 Y  L% ?2 z/ N: g: d| MCASP_RX_OVERRUN);
3 L. p- u! g% p6 ~9 ~* |/ ?  S}
static void I2SDataTxRxActivate(void)
- w0 I, W/ E+ b+ Q* J# T" n, B" F! A{
9 l' O7 f1 T6 Y) k- m* G/* Start the clocks */9 L7 M! g& ]3 b: Y$ e5 h
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 Y; y! p* q5 s2 jMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! w2 p' }! X  p8 g* S8 FEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 V7 P. d5 t: ~5 Q6 o+ F7 l
EDMA3_TRIG_MODE_EVENT);+ u/ \0 s* h8 U; v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 O! F+ v* j5 ?9 U) A! N5 M
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, A/ G4 z  W$ L3 D
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 {2 A# b1 d6 s4 k3 T( m# ]- \7 oMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" e4 D2 b5 B, H4 H: u# P; uwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 R% K3 i- Q* z% l' T8 ]$ l6 r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);, P: W7 J, G- o. v1 n" ^6 M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* Z% H( r, a4 H}
! z. q( ~5 |- w4 v" E- X
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, F6 n1 C6 X2 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 04:30 , Processed in 0.040147 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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