完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我有两个PSoC 3模块(随着开发包)之间,我想建立使用UART协议作为一个大项目的沟通。我新的PSoC所以我开始通过这里的PDF:http://www.cypress.com/?RID=48892
到目前为止,我已经在光秃秃的基本通信从一个PSoC芯片发送一个单字节的建立是成功的,它在其他接收并显示在LCD上,但是我的最终目标是能够发送/接收大量来自芯片的数据,所以一开始,我试图传递它和接收字符串,但迄今没有成功。问题是,我无法同步数据传输,只是得到我的LCD一束迅速变化的特征。我的问题是: 1)在PSoC有缓解数据通过UART模块同步任何内置库或功能? 2)如果不是,我将要同步的一切写我自己的协议?如果是那样的话,我该如何去做,(教程或资源的链接会有帮助)。 提前感谢。 |
|
相关推荐
8个回答
|
|
你需要一个协议。
最简单的解决方案:传输(ASCII)字符串。每个字符串由不可打印字符(如LF或CR,甚至两者)终止。这将需要一个(中断驱动)例程,将所有传入字符复制到缓冲区中。 更复杂: 发送的固定格式消息不同: 第一字节是格式说明符(一个数字) 第二字节(或字)是消息长度。 消息如下。 这个消息也需要一个缓冲算法。 寻找(谷歌)“圆形Buffer Algorithm” 鲍勃 |
|
|
|
|
|
|
|
|
|
|
|
好吧,因为我的目标是传输不只是ASCII字符串的数据块,所以我决定继续你的第二个建议。我查找了循环缓冲区,并用UART中断进行了一些操作,无法理解以下行为:
在传输端,我只是在无限循环中使用uARTHARTPARCHARE()。在接收端,我启用了“RX-ON字节接收”中断,在ISR中,我正在打印接收到的字节。这样的作品除了ISR只执行3次发射PSoC入手,不要执行了(因为当我重置发射机,它使ISR在接收端触发3次之后一切的空闲)。我以为RX中断将继续引发无限因为我一遍又一遍的发射机和ISR应该触发一次接收发送一个字节的字节。我使用的TX和RX缓冲区的大小为4的双方。缓冲区大小属性的我有一点困惑因为我遇到不同的措辞如何工作在各个岗位。从我的理解,在PSoC 3核心的8051有一个8位串行登记,每次一个字节接收它,它会enqued到4字节(默认)FIFO缓冲区。每次我使用uart_getchar()或uart_getbyte()我只是dequeing字节的FIFO。是这样吗?如何辨别接收PSoC元数据你提示自定义协议(即格式说明符,字节数)从实际传输的数据?喜欢想如果接收PSoC是纪录而发射端发送一个数据块,接收器会(错误地)把它理解为一种格式标识符收到第一个字节。我要把握手程序之类的。提前感谢。 |
|
|
|
当你的中断仅发射3次时,你做了错事。最好是在这里上传完整的项目,这样大家都可以看看你的所有设置了吗?这样做,使用的创造者- >;文件& gt;创建工作包(最小的)并将生成的文件(不要使用Chrome,仍可能不工作)。
缓冲区大小的参数必须设置为四(4)因为一个内部中断将开始取接收的字节的缓冲区。这与你自己的中断程序相反。 我的建议是暗示你可能冗余协议检查:格式号码指定的字节数得到转移。你可以定义另外一个trailler字节,使你有更好的机会,同步。此外,不同格式的数量很小。所以,当接收到一个undefinedformat数你知道它是垃圾至少到尾零字节。当使用这些数据你可以的话,甚至更不寻常的(故障)状态区分快。 鲍勃 |
|
|
|
好吧,经过一段时间的工作之后,我终于完成了大部分工作。以下是我使用的格式:
第一字节=格式说明符 第二字节=字节数 *对应的字节数 尾字节=CRC字节 我现在面临的主要问题是:如果我先打开接收机,然后打开发射机,一切都正常。但是如果我先打开发射机,然后接受器,它就不工作了。在附加的代码中,因为当发送器启动并等待应答时,我只发送一次握手字节,所以如果接收器当时没有通电,它就永远不会收到握手请求。显而易见的解决方案是重复发送握手字节并等待答复,但是如果我这样做,发射机就完全失去了信号,即使接收机被关闭,也完成了握手。我检查了一下,发现RX中断被触发时,我没有理由连续发送的字节。为什么? 同时,在年底的CRC校验是在发射端也失灵。它只是没有收到答复,接收发送。 附件是一个既有项目工作包(发射机和接收机)。 UART1.ZIP 2.6兆字节 |
|
|
|
在协议开始时,经常会有协商的阶段开始。这是一个问答阶段,例如测试不同波特率的可用性,并且双方同意相同的值。
稍微复杂一点的是重复发送一个字节并等待一个确定的时间来进行回答。然后进行通信阶段。 鲍勃 |
|
|
|
这就是问题开始的地方。当我反复发送一个字节通过发射机,其RX中断触发,它检测到一个正确的响应从接收器即使后者完全断电。
|
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2100 浏览 1 评论
1846 浏览 1 评论
3664 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1782 浏览 6 评论
1532 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
560浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
412浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
433浏览 2评论
379浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
905浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 21:16 , Processed in 1.128888 second(s), Total 90, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号