本帖最后由 hellonihao 于 2015-11-30 10:18 编辑
正用KE06系列,想用在多机通信项目中,被寻址的节点才接收并响应(网络不大,但有一个STM32F单片机控制设备)。
uart的idle line wake up功能,看了些资料(包括几个不同厂家单片机),发现越看越迷惑,描述如下,搞的我不知哪个才是对的或者我理解错了,两点迷惑如下:
1. 关于功能本身描述的迷惑。
KE06系列(KE06P80M)的datasheeet中idle line wake up这一小节中说,“接收一帧数据结束后,又收到idle character,则硬件自动清零RWU,状态寄存器中IDLE位置1.关于idle character的判断,又需根据控制寄存器UART_C1中的ILT位,该位为0,则从数据的start位后计数高电平;该位为1,则从stop位后计数高电平个数”。
有2个疑问:
① 因为start位低电平,后续虽为高电平,还能认为是idle frame character吗?
② 是前一帧数据接受完,然后有接收到一个idle frame character,则置位状态寄存器S1中IDLE位(若使能IDLE line中断,则同时也产生中 断)? (关于这个,2中的②说,IDLE位置1还与下一帧数据的第一个字符有关系,对比看就感觉很疑惑)
③ 是不是UART 的IDLE LINE wake up这个功能,各个厂家的标准都不是一样的?貌似不同厂家单片机,这个功能不是兼容的??
2. 关于这个功能的用途的迷惑。
① 在百度上,有人说是:用来和DMA配合用,即当一帧信息接收完,同时又有IDLE interrupt,此时表明这一帧信息发完了,DMA可以读数了,这样说貌似就是和idle frame后续的第一个字符无关。
② 另有人说是,在多机通信中,用来接收匹配自己地址的数据块,即idle frame后接着的第一个字符表示地址,该地址字符接收完后产生IDLE标志或IDLE 中断,以决定是否接收后续的数据。
手上就一个开发板,不方便模拟这种场景,请大神权威指点!!! |