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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,/ F; p/ N% d9 X7 Q6 F7 Y
input mcasp_ahclkx,5 J- M, O" O1 p: k
input mcasp_aclkx,
  R; r$ Q/ d; A: ]input axr0,
( e! a! V6 N6 K3 P4 Y, e% h8 B) U% W" E3 w# i& {: ^
output mcasp_afsr,5 p- p5 y4 j9 L7 c* l2 @. @. s$ o# O
output mcasp_ahclkr,
4 I9 |% J0 D5 M6 ~3 [output mcasp_aclkr,
- j, O( w0 A5 Goutput axr1,
4 I3 P7 M2 @  g, C# q. ?1 W8 g
assign mcasp_afsr = mcasp_afsx;9 _- M6 I3 R+ I. `. Z7 \9 S
assign mcasp_aclkr = mcasp_aclkx;- Z) l& h: U2 y5 h. q1 {1 u$ Y
assign mcasp_ahclkr = mcasp_ahclkx;
/ [/ S! f8 u% |* u1 ^  O. o6 massign axr1 = axr0;

7 T+ E/ o( ^% d1 L$ S6 `# \7 ]( Z" E- a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 \0 E1 ?* ]: H5 H( g3 f$ {
static void McASPI2SConfigure(void)1 e# W% u4 e3 Q3 u# b
{
- Y* Q: u$ h  y+ T3 k; P* }/ C8 GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# \; f* |2 P0 J6 MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ I; w  ^2 I6 a! V! Y" e
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ ~* A+ P" o$ U
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* U4 a: l/ h% L& ?2 N$ P. ]
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; n( [: @" c2 h9 @
MCASP_RX_MODE_DMA);5 m: b( W0 E8 M, X* M6 i) J0 a" w8 ]
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ B0 Y6 |6 }; L
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 q# l, G* H6 O3 \. M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . H0 U: l4 r# n9 [! c
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% J& A% W) U9 `& [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, . b% @" e; [1 I7 u. _
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: e/ p3 q! A: g
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);% @9 D) R0 g6 k) s. v
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 }# E4 `" y* d) _4 k! UMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 J3 y) j9 `3 w" N5 Q8 F$ d- G7 [
0x00, 0xFF);
/* configure the clock for transmitter */
. _) L  u0 E2 `  v; G6 uMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 w- E' D1 n0 U- F# zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- x& ~, L/ ~+ L6 S9 [McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! z8 ~) N3 @- E. t$ K- `0x00, 0xFF);! C! I' M8 q- y' C5 ?/ u5 q
; D* V6 q& n0 D. q/ r
/* Enable synchronization of RX and TX sections */
! R. ^& K& ?- c0 U( H/ e; f! mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */9 K& t" @6 x0 V$ o8 k) \6 I
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ O' R7 M. g) J# g7 u& t* i3 Y" i
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** N0 S4 [4 m2 _0 @* }$ v
** Set the serializers, Currently only one serializer is set as
7 h) _- c# K1 a2 T  _" R** transmitter and one serializer as receiver.
. _3 R. D! H" P+ t) d. p& q*/5 d3 d6 N9 }/ O  C, J% a, o4 c
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- n( Y3 d( `2 w  |" V7 t4 y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& ?" T. U5 Y6 l1 q1 @1 {** Configure the McASP pins
4 @* p" \& G/ R2 l  a. @$ Q** Input - Frame Sync, Clock and Serializer Rx: g3 m% `9 m5 n4 r% ]$ p/ e
** Output - Serializer Tx is connected to the input of the codec * I/ Q: {$ |1 O  T- [
*/
$ M$ U, Y: G4 E! R% p" |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' e# u& u/ ]. u3 l0 b
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 V9 u6 k5 G- ^. s6 e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 `9 Y) ^; j( q3 J. n| MCASP_PIN_ACLKX0 l2 P: P( |4 R4 n, [9 k) |
| MCASP_PIN_AHCLKX
2 e8 w) n4 y# K  U8 {, }3 X| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. _8 Y7 [4 A- {' M7 A9 s5 @McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , B# K6 R8 S# A& O! S0 Z
| MCASP_TX_CLKFAIL , e0 m, `# N. F- q
| MCASP_TX_SYNCERROR) A+ L0 G# Z( H3 |
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 P0 i8 T$ @1 v| MCASP_RX_CLKFAIL( b0 R! z  Q& J( _7 t
| MCASP_RX_SYNCERROR
, h1 v) A- q% W& D" M7 ]1 ?5 n| MCASP_RX_OVERRUN);$ E2 P" y: N' p0 T! }/ K
}
static void I2SDataTxRxActivate(void), g! h" I; h) G! h# F; \6 I
{
9 z5 Y: j. e' u. X, Y( K$ w5 d% c/* Start the clocks */
2 {! F- c9 y5 d6 K+ a4 K, cMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ U* U$ I+ N8 {( L+ a3 q
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: V! _0 E% ]6 I6 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( e9 F  U( U% W" [' B& p
EDMA3_TRIG_MODE_EVENT);
' t; w  P6 U9 T7 \" J, _1 ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & l) t  ?( [$ B8 A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */9 K" s( e9 E" G  Z( |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 U  n+ [# Z- a! N: w: CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 j$ H7 r; U; M/ n
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& e' v  }: H: T7 r) c
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 B) J- a1 f- y, s1 Y7 ^; M- B
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, N, h" g5 l8 p8 H$ I( {! F% _
}
+ t5 Q6 `2 E" I3 V) o8 d
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ F7 \6 j# I5 o0 \; G  n8 ?, T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-16 09:33 , Processed in 0.041133 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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