MyFPGA Forum

标题: 串口发送遇到的问题 求高手解答 [打印本页]

作者: 木易X布    时间: 2011-3-30 19:37
标题: 串口发送遇到的问题 求高手解答
跪求高人指导                                 
void Uart0_SendBuf(Uint8 const *buf, Uint32 n)
{
    int i;
    alt_u32 Status;
    for (i = 0; i < n; i++)  
      {
       IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE,buf[i]);
       Status = IORD_ALTERA_AVALON_UART_STATUS(UART_BASE);//保存状态
       while ((Status & ALTERA_AVALON_UART_STATUS_TRDY_MSK) == 0);     /* 等待数据发送完毕         */
      }
}
我这段程序为什么运行到while这个地方就停止了啊
trdy位不是自动清零吗?
trdy位不是在为1的时候才能向txdata寄存器写数据吗
作者: 木易X布    时间: 2011-3-30 19:38
求解答
坐等解答
坐等高手解答
作者: yqzhang    时间: 2011-3-31 15:34
直接采用IOWR这种端口操作,感觉不是太好用。。建议使用 file 操作方式来弄比较好
  1. void uart_loopback()
  2. {
  3. //    char buffer[640*480*2] = {0};
  4. //    char *pBuf = buffer;

  5.     char *pBuf = NULL;
  6.    
  7.     printf("uart loopback test...\n");
  8.     FILE*fp;
  9.     int i = 0;
  10.     fp =fopen("/dev/uart_0","r+");
  11.     if(fp)
  12.     {
  13.         pBuf = (alt_u8*)FRAME_SRC_LEFT;
  14.         for(i=0; i< 480 ; i++)
  15.         {
  16.             fread(pBuf, 1, 640, fp);
  17.             pBuf = pBuf + 640;
  18.             
  19.             printf("li = %d \n", i);
  20.         }
  21.         printf("load left image over...\n");
  22.         
  23.    
  24.         pBuf = (alt_u8*)FRAME_SRC_RIGHT;
  25.         for(i=0; i< 480 ; i++)
  26.         {
  27.             fread(pBuf, 1, 640, fp);
  28.             pBuf = pBuf + 640;
  29.             
  30.             printf("ri = %d \n", i);
  31.         }
  32.         printf("load right image over...\n");
  33.         
  34.         fclose(fp);
  35.         
  36.         fp =fopen("/dev/uart_0","r+");
  37.         
  38.         pBuf = (alt_u8*)FRAME_SRC_LEFT;
  39.         for(i=0; i<480; i++)
  40.         {
  41.             fwrite(pBuf,1,640,fp);
  42.             pBuf = pBuf + 640;
  43.             
  44.             printf("i = %d \n", i);
  45.         }
  46.         
  47.         printf("send left image over...\n");
  48.         
  49.         fclose(fp);  
  50.      }
  51.      else
  52.      {
  53.         printf("open uart device fail\n");
  54.      }
  55. }
复制代码

作者: 木易X布    时间: 2011-4-1 21:41
回复 3# yqzhang


这种我也写过,但是在接收时出错了,不知道什么原因,我用的是串口摄像头,发送完命令不能接收数据
作者: yqzhang    时间: 2011-4-2 09:40
两者的Baud,奇偶校验等参数都设置一致了么?
作者: yqzhang    时间: 2011-4-2 09:45
PC 串口测试tool.rar (33.56 KB, 下载次数: 13)
de2_115_Uart_SOPC.rar (1016.75 KB, 下载次数: 18)
这两部分是经过测试的。。。
作者: 木易X布    时间: 2011-4-6 20:12
回复 6# yqzhang

Baud,奇偶校验等参数都设置一致,可以发送,但是不能接受,只要当每次在我断电的时候会回答一些很乱的字符




欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/) Powered by Discuz! X3