Thông báo

Collapse
No announcement yet.

Nhận data từ cổng Com trên boad DE2

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nhận data từ cổng Com trên boad DE2

    Mình có đoạn code đơn giản để nhận data từ cổng com và hiển thị lên màn hình LCD như sau:
    Code:
    volatile int *RS232_UART_DATA = (int*) 0x10001010;
    volatile char *lcd = (char*) 0x10003050; //LCD PORT
    void main()
    {
        int data;
        data=*RS232_UART_DATA;
        if(data&0xffff0000)         //kiểm tra có data trong FIFO ko
           {
           	data=data & 0xff;          //lấy data ra
        *lcd = 0x80; //SET GIA TRI CHO CON TRO LCD O VI TRI (0,0)
           *(lcd+1) =data;
    }
    Nhưng khi mình kết nối máy tính với Board và dùng phần mềm Terminal để truyền kí tự xuống board thì không nhận được gì hết.Mong các bro chỉ giúp dùm.
    Rất cảm ơn!!!

  • #2
    cần check:
    1. base address trong SOPC builder và trong code đã match chưa?
    2. địa chỉ của thanh ghi chứa data trong RS232_UART_DATA có phải là đầu tiên?
    3. sao không sử dụng interrupt thay cho check fifo?
    trong code trên mình thắc mắc:
    -data&0xffff0000 --> bạn nói check có dữ liệu? --> vậy là dữ liệu của bạn chỉ có 16bit và 16 bit này nằm phía bên trái (0xffff|0000) MSB hay LSB là do system của bạn.
    - vậy "data=data & 0xff" bạn lấy dữ liệu lại lấy 8bit cuối bên phải?????????
    làm rõ hết các điểm này thì bạn sẽ giải quyết đc vấn đề.

    Comment


    • #3
      1.địa chỉ đã chính xác
      2.data & ffff0000 lÀ CHECK FIFO vì 16 bit bên trái của thanh ghi UART là kiểm tra có dât trong FIFO hay ko.8 bit bên phải là bit data.Nếu 16bit bên trái là 0 hết thì 8 bit bên phải là undefine nên ta phải kiểm tra.Nếu nhảy vào if thì có data nên gán data=data&ff là lấy data ra.

      Comment

      Về tác giả

      Collapse

      thaitam2406 Tìm hiểu thêm về thaitam2406

      Bài viết mới nhất

      Collapse

      Đang tải...
      X