牛卧堂MCU技术交流

标题: 各位牛友,请问手册上说15字节的FIFO怎么理解 [打印本页]

作者: fan168668    时间: 2014-1-13 09:23
标题: 各位牛友,请问手册上说15字节的FIFO怎么理解
看新塘的技术手册关于发送数据缓存与接收数据缓存,有15字节的FIFO,那么是不是说一次最多只能发送/接收15字节的数据呢?DrvUART_Write(UART_PORT1,string,24);(string[24]={0x21,0x22,......,0x45};)这样会不会溢出呢?实际运行证明,可以实现功能的。

作者: bkn1860    时间: 2014-1-13 10:10
一次可以连续发送或者接收15个字节数据,多于15个字节的时候可以分次发送或者接收
作者: fan168668    时间: 2014-1-13 10:21
bkn1860 发表于 2014-1-13 10:10
一次可以连续发送或者接收15个字节数据,多于15个字节的时候可以分次发送或者接收 ...

这里的分次发送或者接受是咱们自己写程序来实现:比如DrvUART_Write(UART_PORT1,string1,15);DrvUART_Write(UART_PORT1,string2,9);(string1[15]={0x21,0x22,......,0x36}  string2[9]={0x37,0x38,......,0x45};),就是把原来的指令分成两部分来发。还是芯片自动识别指令然后分次发送或接受呢
作者: bkn1860    时间: 2014-1-13 10:26
这里的分次是自己用程序来实现
作者: fan168668    时间: 2014-1-13 10:34
bkn1860 发表于 2014-1-13 10:26
这里的分次是自己用程序来实现

看来我得修改一下程序了
作者: fan168668    时间: 2014-1-13 10:38
bkn1860 发表于 2014-1-13 10:26
这里的分次是自己用程序来实现

可是我用UART0口与外接触摸屏之间的通信,有很多指令都是超过15字节的额,并没有分次发送,功能照常实现啊!
作者: bkn1860    时间: 2014-1-13 10:50
你往15个FIFO写入的过程数据也在发送,你一次性写入的数据超过15个那有可能是已经有数据发送出去了刚好填补了空出来的FIFO。如果有数据丢失的情况出现那这里出问题的可能比较大。
作者: a_ziliu    时间: 2014-1-13 21:33
In the function, it has checked tx fifo is empty, fifo empty transfer data to uart fifo.

int32_t DrvUART_Write(E_UART_PORT        u32Port,uint8_t        *pu8TxBuf,         uint32_t u32WriteBytes)
{
    uint32_t  u32Count, u32delayno;

        UART_T * tUART;

        tUART = (UART_T *)((uint32_t)UART0 + u32Port);  

    for (u32Count=0; u32Count<u32WriteBytes; u32Count++)
    {
       u32delayno = 0;
           while (tUART->FSR.TE_FLAG !=1)                                                            /* Wait Tx empty and Time-out manner */       {
                   u32delayno++;
                   if ( u32delayno >= 0x40000000 )                 
                      return E_DRVUART_ERR_TIMEOUT;                    
                                  
       }
           tUART->DATA = pu8TxBuf[u32Count];                                                /* Send UART Data from buffer */
    }

    return E_SUCCESS;
       
  
}
作者: fan168668    时间: 2014-1-14 15:52
a_ziliu 发表于 2014-1-13 21:33
In the function, it has checked tx fifo is empty, fifo empty transfer data to uart fifo.

int32_t D ...

等到发送数据缓存区空了再发是吗?这个函数内部就自己判断了




欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2