完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我遇到了一些我很难弄清楚的行为。我在全双工模式下使用SPI主机,只使用硬件FIFO(无中断)与外部芯片通信。我可以通过SPI写得很好。我还可以看到,设备对我的SPI主命令的响应是正确的,因为预期数据是由Oracic分析器看到的。也就是说,来自创建者API的SpimRead ReXDATA不符合预期。这是因为SpimgGeTrxBuffResiZe()返回了不正确的字节数。
如果我通过SPIM发送3字节的数据,我应该接收3字节的数据(即使它是垃圾),因为它是基于移位寄存器的,并且与主时钟同步。我有时会得到一个,但通常是零字节。所以,我很困惑。下面是代码片段。有人对这件事有什么想法吗? 静态BoLoT AFE4300读取(UIT88T地址,Uti1616T*PDATA)/ **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************3字节写*由AFE的硬件定义,不能改变。第一字节*始终是要从中读取数据的寄存器。下一个16位*传输是数据。除了数据寄存器之外,所有寄存器都必须在读过之后重新写入。************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ATA将高位字节移出设备SPIMUWRIGETXDATA(0x00);/ /发送哑数据以移出设备TEMP=SPIMUGErrxBuffSersie()的低字节;如果(TEMP>=3){SPIMARRead RXDATA();//忽略地址在HythByth= SPIMARRead ReXDATA()中的地址移位;LuxByth.SPimaRead RxDATA();* pDATa=((UI)NT16It)HythByg & lt;lt;(UTI1616T)低字节;//写入RX数据返回设备,除非它是ADC寄存器(如果是ADCYDATAL ReGEADADR!){地址){//重新写入数据到寄存器SPIMGWORTETXDATA(地址“AdvrsScript写Enabl”);SpimthWruteXDATA(Hyb字节);SpimthWruteXDATA(低字节);}成功=TRUE;} /*注意:如果成功为假,AFE处于未知状态,将需要重置* /返回(成功);} & lt;/PRE& GT;我把一个主时钟数据的PNG附加在从属设备上。主控制器写一个0x21以从从属数据中获得数据,后面跟着两个哑字节。虚拟字节被正确地验证为包含0x81x0xc3和0xc3。PSoC由于某种原因没有接收到这些字节。 谢谢您。 数据恢复 68.8 K |
|
相关推荐
3个回答
|
|
|
|
|
|
OxWruteXDATA()将值放在TXFIFO中。它不会等到数据被发送。因此,您检查RX缓冲区的大小太早了。检查SPI状态并等待直到所有字节都被发送。
|
|
|
|
lxhzx 发表于 2019-10-16 16:43 你是对的。问题有两个部分。第一个是,如果不使用软件缓冲区,检查RX缓冲区功能是不起作用的。因此,为了使软件缓冲器能够启用,我不得不将缓冲区大小增加到4字节以上。然后我可以等待SpimSimple完成并检查数据。当然,如果我发送3个字节,RX FIFOSH也应该有3个字节,所以检查RX缓冲区大小是不必要的。 谢谢。 |
|
|
|
只有小组成员才能发言,加入小组>>
751个成员聚集在这个小组
加入小组2064 浏览 1 评论
1824 浏览 1 评论
3632 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1760 浏览 6 评论
1508 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
502浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
354浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
409浏览 2评论
354浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
851浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 18:35 , Processed in 0.884145 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号