Cypress技术论坛
直播中

卢兰凤

8年用户 224经验值
私信 关注
[问答]

从机模式下的SPI无法看到传输的数据是怎么回事?

嗨,大家好,
我试图在PSoC 5中配置SPI作为Slave。
每当我从主机那里获得一个字节的数据时,我需要立即将字节发送给主机。
对主机的响应将根据从主机接收到的数据而改变。
以下是SPI从机的配置:
启用了RX内部中断CPHA=0和CPOL=0个8位字,将一个中断分量绑定到SPIS,我不能得到中断,而在MISO线路上,我不能看到我打算传输的数据(用示波器检查MISO上的数据)。
谁能让我知道,怎么了?
我附上了这个项目。
SpIsPayPrime0.01Cysnz.zip
1兆字节

回帖(3)

王琳

2019-10-18 10:57:09
对于一个12兆位/秒的比特率,你提供的2MHz时钟将无法工作。最好为SPI从内部选择时钟。
设置内部中断,它将处理所有的接收,但不允许您处理来自组件的读取数据。请参阅数据表中的中断部分。
每次调用中断处理程序时,都会填充TX缓冲区,这会消耗大量MIPS。
我建议您将SPIS RX和Tx缓冲区增加到30个字节,并让组件自动处理所有的传输。
可以使用回调宏来检测0x55或0xFF的初始字节,然后适当地填充Tx缓冲区一次。查看右回调宏名称的“SPISJRXIISRESEXCARBACK”的数据表。
不要忘记在完成事务后清除RX缓冲区。
鲍勃
举报

卢兰凤

2019-10-18 11:05:20
引用: ncmza 发表于 2019-10-18 12:24
对于一个12兆位/秒的比特率,你提供的2MHz时钟将无法工作。最好为SPI从内部选择时钟。
设置内部中断,它将处理所有的接收,但不允许您处理来自组件的读取数据。请参阅数据表中的中断部分。
每次调用中断处理程序时,都会填充TX缓冲区,这会消耗大量MIPS。

嗨,鲍伯,
我对PSoC很陌生。
你能告诉我回调宏有用吗?
基于接收到的最初几个字节的内容,将改变对主数据。
如何做到这一点呢?
举报

王琳

2019-10-18 11:18:20
回调宏在创建者帮助中解释。它们不是中断,但可能是组件中断的扩展。一个例子:
I2C组件只有一个中断,在任何内部处理完成之前触发。但是在处理之前和之后都定义了四个(4)CalBug宏。
鲍勃
举报

更多回帖

发帖
×
20
完善资料,
赚取积分