您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF53x技术支持专区 -> 求助BF533的SPORT接口
本帖共有1073个阅读者
发表帖子 发表投票 回复主题
求助BF533的SPORT接口
xiaohaotile(论坛新手)
xiaohaotile
头衔:社区公民
帮派:无帮无派
帖数:26
金钱:337
积分:37
注册时间:2012/10/30
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
求助BF533的SPORT接口

例程中有这样的语句:*pSPORT0_TCR2  = 31;设置数据宽度为32位;

Init_Sport1_TX(7,9);

void Init_Sport1_TX(int TCLKDIV,int TFSDIV)
{

*pSPORT0_TCLKDIV = TCLKDIV;
*pSPORT0_TFSDIV  = TFSDIV;  
*pSPORT0_TCR1  = ITFS|TFSR|ITCLK;
*pSPORT0_TCR2  = 31;
}

手册上说TFSDIV的系数要比数据长度SLEN要大啊,为什么例程中TCR2设置的值31比TFSDIV的值大?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/1/21 20:11:08
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

谢谢你,确实如你所说,TFSDIV 需要大于SLEN,这是我们的失误,回头会改正代码。这个代码最早是8位传输的,后来给改成32位,漏了修改TFSDIV 值。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/1/23 10:31:08
xiaohaotile(论坛新手)
xiaohaotile
头衔:社区公民
帮派:无帮无派
帖数:26
金钱:337
积分:37
注册时间:2012/10/30
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

是不是只要把Init_Sport1_TX(7,9);中的9改成31就可以了?DMA传输中设置了32位,分四次,是不是每次传输8bit,四次传输完成啊?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/1/23 12:46:35
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

至少改为32,要大于传输字的长度,具体时序需要根据设备的时序匹配。

DMA设置32,表示DMA1次传输32Bit,DMA有打包功能,即使你的SPORT采用8bit,DMA也会凑足32bit进行几次传输。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/1/24 10:40:35
xiaohaotile(论坛新手)
xiaohaotile
头衔:社区公民
帮派:无帮无派
帖数:26
金钱:337
积分:37
注册时间:2012/10/30
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

用没改之前的程序,是四个八位的数。

设置成32位之后,是不是两个帧同步信号之间就是一个32位的数?


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/1/25 12:29:14
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

是,你可以用示波器测量一下波形


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/1/25 22:52:40
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159382 Call, 1 Queries, Processed in 0.015625 second(s),