打印

PSOC的SPI有很广的变通用法,可以驱动常见的很多芯片

[复制链接]
9204|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinpaidianzi|  楼主 | 2012-2-28 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发现所有SPI话题的几乎回贴率为0,可能SPI接口的芯片不怎么常用,一般的显示芯片SM6928.HT1622之类的都是一种三线定义的接口,不论不类,我也不知道它是什么接口类型,哈哈,虽然用了这么多年,但驱动它无非都是一个字节一个字节的发送数据,一般的做法是用IO口软件驱动,CLK都是用延迟来生成,这样有点浪费CPU的资源,特别是MC8内核,慢(比AVR等)。再加上IO驱动超麻烦,我试了,用SPI主动模块,让它发送一个字节,在发送完中断里操作,哈哈,这样即快又省了IO口的操作(要影子寄存器,有点烦),我用CY8C22545驱动 SM1628在产品上,很不错的,代码精简,工作稳定。不过最好不要用在CY8C21534之类的,如果开了CSD的算法,SPI就很难搞了,它的不是独立的CSD要占用时钟资源。随便说说,大家也说点
沙发
hold住| | 2012-2-28 22:32 | 只看该作者
看LZ说的,我觉得驱动很多SPI都用不着硬件SPI,象HT1621这样的,刷新率那么低,占CPU时间不多的

使用特权

评论回复
板凳
acer4736| | 2012-2-28 22:37 | 只看该作者
SPI简单的协议,一般高手不愿意讨论此问题

使用特权

评论回复
地板
gexingyouxian| | 2012-2-28 22:39 | 只看该作者
一般情况下是如此,在面板驱动线长时,想降低驱动时钟频率,或是同时驱动几个时,就要占用时间了,当然如果主程序没太多任务不在乎那就无所谓了。呵呵,我也说虽边说说,也许有的人能用上。

使用特权

评论回复
5
yangguangaisha| | 2012-2-28 22:42 | 只看该作者
2楼的xnliuxiwen ,可能您是位资深的PSOC的使用者了。在这里向您请教一下,不知您对PSOC的SPI模块试过没有,我在SPI和TX8使用中发现SPI的发送完中断不能产生,寄存器空中断可以,而TX8的是不论设为什么中断类型,而实际的中断都是寄存器空中断,很郁闷啊,

使用特权

评论回复
6
G21372| | 2012-2-28 22:45 | 只看该作者
建议UF00做以下的尝试
1)看看boot.asm里的中断向量表是否有调用你编写的中断服务程序
2)是否PSoC Designer版本过低,建议去官网上下载最新的PD5.0 SP6

另外,可否更详细的描述你使用SPI的流程?这样大家才好帮你分析

使用特权

评论回复
7
huigoushang| | 2012-2-28 22:51 | 只看该作者
在您的中断程序里必须还要处理其它标志,否则中断就只产生一次
BYTE tmp = BSPIM_cGetStatus();
void interrupt spim_isr(void) @ 0xXX  
if(tmp & BSPIM_OVERRUN_ERROR)
{
   tmp = BSPIM_SPIM_CGetData();   //Clear the error
}
else if(tmp & BSPIM_SPI_COMPLETED)
{
   your code above  
}

使用特权

评论回复
8
浏览器123| | 2012-2-29 21:26 | 只看该作者
楼主说的很对

使用特权

评论回复
9
hlmdd| | 2012-10-20 13:39 | 只看该作者
楼主有没有研究过驱动NRF24L01.怎么做呢?望帮助,谢谢!

使用特权

评论回复
10
jlj8315292| | 2012-10-28 10:08 | 只看该作者
哎,楼主能不能发个教程呀?我对SPI不是很了解,使用它驱动一个TFT(st7735)怎么也搞不定,最后没办法只能模拟SPI。

使用特权

评论回复
11
jlj8315292| | 2012-10-28 10:09 | 只看该作者
对了,我用的cy8c3866

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

1489

帖子

1

粉丝