如果从上位机按帧从串口发送数据,且每帧数据的长度不确定,甚至每个帧长度的差异比较大,只知道最小帧长度,如果使用DMA方式进行接受,似乎有点不方便,因为帧数据长度不确定,也就没办法确定memory的长度,如果memory长度比较大,有可能全部数据存入后都没到memory的一半,因此没办法使用中断,使用查询方式也不方便。如果不用DMA的话,在USART的中断中接收,由于上位机用writefile调用驱动发送数据时是一次性发送,会出现数据丢失,只能在上位机中单字节发送数据,并且加少量延时。
而且使能了USART的DMA传输,似乎USART不再产生中断,因此也不能在上位机发送完一帧数据后,再补发一个数据以产生USART中断,这种情况有什么好办法呢?
刚刚想到,如果DMA的memory就使用8位,每次在DMA中断中进行处理会不会也出现数据丢失呢?
求解答 |