Bài giảng Lập trình hệ nhúng - Chương 5: Lập trình Device Driver trên Linux - Phạm Văn Thuận
Chương 3. Lập trình vào ra nâng cao
3.1. Lập trình giao tiếp cổng COM theo chuẩn
RS232
3.2. Lập trình giao tiếp cổng USB
3.3. Lập trình ghép nối ADC
Bạn đang xem tài liệu "Bài giảng Lập trình hệ nhúng - Chương 5: Lập trình Device Driver trên Linux - Phạm Văn Thuận", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Lập trình hệ nhúng - Chương 5: Lập trình Device Driver trên Linux - Phạm Văn Thuận
Chương 3. Lập trình vào ra nâng cao 3.1. Lập trình giao tiếp cổng COM theo chuẩn RS232 3.2. Lập trình giao tiếp cổng USB 3.3. Lập trình ghép nối ADC Lập trình hệ nhúng 59 3.1. Lập trình giao tiếp cổng RS232 § Chuẩn đầu nối trên PC • Chân 1 (DCD-Data Carrier Detect): phát hiện tín hiệu mang dữ liệu • Chân 2 (RxD-Receive Data): nhận dữ liệu • Chân 3 (TxD-Transmit Data): truyền dữ liệu • Chân 4 (DTR-Data Terminal Lập trình hệ nhúng 60 Ready): đầu cuối dữ liệu sẵn sàng • Chân 5 (Signal Ground): đất của tín hiệu • Chân 6 (DSR-Data Set Ready): dữ liệu sẵn sàng • Chân 7 (RTS-Request To Send): yêu cầu gửi • Chân 8 (CTS-Clear To Send): Xóa để gửi • Chân 9 (RI-Ring Indicate): báo chuông Chuẩn RS232 § Khuôn dạng khung truyền • PC truyền nhận dữ liệu qua cổng nối tiếp RS-232 thực hiện theo kiểu không đồng bộ (Asynchronous) • Khung truyền gồm 4 thành phần ü1 Start bit (Mức logic 0): bắt đầu một gói tin, đồng bộ xung Lập trình hệ nhúng 61 nhịp clock giữa DTE và DCE üData (5,6,7,8 bit): dữ liệu cần truyền ü1 parity bit (chẵn (even), lẻ (odd), mark, space): bit cho phép kiểm tra lỗi üStop bit (1 hoặc 2 bit): kết thúc một gói tin Lập trình giao tiếp RS232 § Khởi tạo: Khai báo thư viện § Bước 1: Mở cổng § Bước 2: Thiết lập tham số § Bước 3: Đọc, ghi cổng Lập trình hệ nhúng § Bước 4: Đóng cổng 62 Khai báo thư viện § #include § #include § #include § #include // UNIX standard function Lập trình hệ nhúng § #include // File control definitions § #include // Error number definitions § #include // POSIX terminal control § #include // time calls 63 Bước 1: Mở cổng § Sử dụng lệnh mở file int fd = open ("/dev/ttySAC0", O_RDWR); § Fd >0 nếu mở file thành công § Fd<0 nếu mở file thất bại Lập trình hệ nhúng 64 Bước 2: Thiết lập tham số § Sử dụng cấu trúc termios struct termios port_settings; § Thiết lập tham số (9600, 8, n, 1) cfsetispeed(&port_settings, B9600); cfsetospeed(&port_settings, B9600); Lập trình hệ nhúng port_settings.c_cflag &= ~PARENB; port_settings.c_cflag &= ~CSTOPB; port_settings.c_cflag &= ~CSIZE; port_settings.c_cflag |= CS8; tcsetattr(fd, TCSANOW, &port_settings); 65 Bước 3: Đọc, ghi cổng § Đọc cổng: sử dụng lệnh đọc file n=read(fd,&result,sizeof(result)); ØN: số ký tự đọc được ØResult: chứa kết quả Lập trình hệ nhúng § Ghi cổng: sử dụng lệnh ghi file n=write(fd,“Hello World\r",12); ØN:số ký tự đã ghi ØFd: file id (có được từ thao tác mở file thành công) 66 Bước 4: Đóng cổng § Đóng cổng: sử dụng lệnh đóng file close (fd); Fd: file ID (có được từ thao tác mở file thành công) Lập trình hệ nhúng 67 3.2. Lập trình giao tiếp USB Lập trình hệ nhúng 68 3.3. Lập trình giao tiếp ADC Lập trình hệ nhúng 69
File đính kèm:
- ai_giang_lap_trinh_he_nhung_chuong_3_lap_trinh_vao_ra_nang_c.pdf