CH372B以伪中断方式上传数据的问题

我的单片机程序里采用了以伪中断方式上传数据。 首先我根据一个标志位判断是否执行以下程序,其中该标志位是在中断程序中读到批量 端点上传成功时被置1的。 清标志位; CH375_WR_CMD (CMD_WR_USB_DATA7 );//向USB端点2的发送缓冲区写入数据块 CH375_WR_DAT( 2 ); //数据长度 CH375_WR_DAT(data1); //数据 CH375_WR_DAT(data2); //数据 CH375_WR_CMD (CMD_WR_USB_DATA5 ); //向USB端点1的发送缓冲区写入数据块 CH375_WR_DAT(1); //数据长度 CH375_WR_DAT(0x55); //USB中断状态码 按上面这种程序,我的设想是单片机一直以伪中断方式上传数据,但现在的问题是数据上传3,4次后,单片机中断里没读到批量端点上传成功,导致标志位无法及时置1,所以后面的上传程序无法被执行了。请问这个问题会出在哪?

 最好把你的上位机程序贴出来看看


而且你说的这种方式,要先传端点1的数据,端点1上传成功之后在上传端点2的数据,端点2上传成功之后再传端点1的数据


上传数据流以伪中断方式发起的系统中,计算机应用层初始化时设置一个伪中断服务程序,然后 应用层就不需要再涉及到上传数据流。当单片机需要上传数据时,首先将数据写入批量端点的上传缓 冲区中,然后将中断特征数据写入中断端点的上传缓冲区中。在1 毫秒之内(理论值),与中断特征 数据对应的伪中断服务程序被激活,伪中断服务程序通知主程序调用数据上传API获得上传数据块。 在此期间,单片机将会收到CH372 芯片通知的两次中断,首先是中断端点上传成功中断,然后是批量 端点上传成功中断。


我的程序是按上面说的方式发生数据的,现在主要是单片机收到CH372芯片的中断不是很稳定,有时候会收不到中断


首先是通过中断端点(端点1)传数据,中断端点上传成功中断之后,然后再往批量端点写数据,等到批量端点上传成功之后再传下一次数据,还有PC机中的中断服务程序不要做太多费时的操作,一般都是发个消息,然后在消息响应中做相应处理(一般是读端点2的数据)


首先是通过中断端点(端点1)传数据,中断端点上传成功中断之后,然后再往批量端点写数据,等到批量端点上传成功之后再传下一次数据,还有PC机中的中断服务程序不要做太多费时的操作,一般都是发个消息,然后在消息响应中做相应处理(一般是读端点2的数据)


谢谢楼上的兄弟,请问PC机中的中断服务程序发消息怎么发啊,我VC++用的不熟,能贴下源码吗


如果用vc的话,可以使用多线程查询的方式,这样效率高.下面这个是中断回调的方式 UploadImages/20091138452752.rar


谢谢,先学习下


我按 首先是通过中断端点(端点1)传数据,中断端点上传成功中断之后,然后再往批量端点写数据,等到批量端点上传成功之后再传下一次数据,还有PC机中的中断服务程序不要做太多费时的操作,一般都是发个消息,然后在消息响应中做相应处理(一般是读端点2的数据) 这个方法试验了下,发现CH372产生的中断还是很没规律,有时候会中断,有时候死活都不中断,导致无法判断是否发送成功,郁闷啊


上传数据流以伪中断方式发起的系统中,计算机应用层初始化时设置一个伪中断服务程序,然后 应用层就不需要再涉及到上传数据流。当单片机需要上传数据时,首先将数据写入批量端点的上传缓 冲区中,然后将中断特征数据写入中断端点的上传缓冲区中。在1 毫秒之内(理论值),与中断特征 数据对应的伪中断服务程序被激活,伪中断服务程序通知主程序调用数据上传API获得上传数据块。 在此期间,单片机将会收到CH372 芯片通知的两次中断,首先是中断端点上传成功中断,然后是批量 端点上传成功中断。 这里提到的“CH372 芯片通知的两次中断”,我觉得这两次中断很不稳定


首先,CH372 芯片通知的两次中断,是CH372向指单片机产生的两次中断,一个是中断端点(端点1)上传成功,一个是批量端点(端点2)上传成功;上位机的伪中断其实并不是中断,只是下位机向上位机通报有数据到来的一种机制,其实现原理是,CH375SetIntRoutine在动态库中创建了一个优先级比较高的线程在不停的读端点1的数据,如果这个线程读到端点1数据的的话,那么他将调用CH375SetIntRoutine设置的中断服务回调函数,CH372向端点1中写数据,其实就是向pc通知有数据到了,向端点2写的数据一般就是所要上传的数据,所以上位机读到端点1的数据就会调用设置的回调函数.回调函数其实是在CH375SetIntRoutine创建的线程中执行的,而线程的优先级比较高不易做费时的操作,一般就是发送消息或是激活系统的事件,这样在消息的处理中做一些读端点2的操作和对数据的处理,第8楼中的例子中有上位机和下位机的代码,可以参考一下.


CH372 中断问题搞了好久还是没能搞定,崩溃了, 帮帮看看我的程序倒底哪错了。 我的目的很简单,下位机以伪中断方式通知PC机接数据,可就是不稳定,有时可以收到数据,有时上位提示设备拔出。 批量下传和上传都没问题,线没问题。

MCU STC12C5410AD 24M晶振

附件:下位机程序keil C 和 VB上位机程序 UploadImages/20091151545622.zip


搞定了,搞定了是时序问题


请问你说的时序问题是怎么回事?能不能详细解释一下?谢谢


只有登录才能回复,可以选择微信账号登录