[求助] 串口实验波特率

tianma123   2012-3-23 20:37 楼主
sopc builder中设置波特率是9600,串口工具设置9600,发送36时,接收是FB,串口调试工具设置19200,则收到的是36,这是什么问题啊



#include "system.h"
#include "unistd.h"
#include "altera_avalon_uart_regs.h"
#include "sys/alt_irq.h"
#include "stdio.h"
unsigned char i;
int baudrate;
void uart_irq(void *context,unsigned long id)
{
    IOWR_ALTERA_AVALON_UART_STATUS(UART_232_BASE,0x0);
    IOWR_ALTERA_AVALON_UART_CONTROL(UART_232_BASE,0x0);
    if(IORD_ALTERA_AVALON_UART_STATUS(UART_232_BASE) & 0x80)
    {
        i = IORD_ALTERA_AVALON_UART_RXDATA(UART_232_BASE);
    }
    while(IORD_ALTERA_AVALON_UART_STATUS(UART_232_BASE) & 0x80);
    IOWR_ALTERA_AVALON_UART_TXDATA(UART_232_BASE, i);
      while(!IORD_ALTERA_AVALON_UART_STATUS(UART_232_BASE) & 0x40);
    IOWR_ALTERA_AVALON_UART_CONTROL(UART_232_BASE,0x80);
}
int uart_init(void)
{

    IOWR_ALTERA_AVALON_UART_STATUS(UART_232_BASE,0x0);
    IOWR_ALTERA_AVALON_UART_CONTROL(UART_232_BASE,0x80);//开接收中断
    return  alt_irq_register(UART_232_IRQ, NULL, uart_irq);
}
int main(void)
{
    if(!uart_init())
    {
        printf("successful\n");
    }
    else
        printf("unsuccessful\n");
    while(1)
    {
        IOWR_ALTERA_AVALON_UART_TXDATA(UART_232_BASE, 0x36);
        usleep(1000000);
    }
}

回复评论 (3)

收发的波特率设置要统一的    不然肯定误码了

点赞  2012-3-26 10:50

对的,收发波特率不一致,按照协议收发的数据肯定不对啊

一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!
点赞  2012-3-26 13:02
sopc builder中设置波特率是不是设错了,设成19200了
点赞  2012-3-26 13:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复