Đọc file nhạc và ảnh từ ổ cứng

Trên một mặt làm việc của đĩa từ chia ra nhiều vòng tròn đồng tâm tạo thành các track để xác định các vùng lưu trữ dữ liệu riêng biệt trên mặt đĩa. Track trên ổ đĩa cứng không cố định từ khi sản xuất, chúng có thể thay đổi vị trí khi ta định dạng cấp thấp cho ổ đĩa (low format). Khi một ổ đĩa cứng đã hoạt động nhiều năm liên tục, phần cơ của nó sẽ bị bào mòn và làm việc không chính xác như khi mới sản xuất. Nếu kiểm tra bằng các phần mềm cho thấy nhiều vùng trên đĩa bị hư hỏng (bad block) thì nên tiến hành định dạng cấp thấp cho nó để tái cấu trúc lại các track cho phù hợp hơn với sự xuống cấp của phần cơ.

doc153 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2933 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đọc file nhạc và ảnh từ ổ cứng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BGR: Hoán đổi trật tự R và B của dữ liệu ghi. BGR = "0": Làm theo thứ tự RGB để ghi các dữ liệu điểm ảnh. BGR = "1": Hoán đổi dữ liệu RGB cho BGR bằng cách ghi vào GRAM. TRI: Khi TRI = "1", các dữ liệu được chuyển giao cho RAM nội trong 8 bit x 3 chế độ chuyển thông qua giao diện 8 bit. Cũng có thể để gửi dữ liệu thông qua giao diện 16-bit hoặc SPI ở chế độ chuyển mà nhận ra hiển thị trong 262K màu sắc kết hợp với bit DFM. Khi không sử dụng các phương thức giao diện, hãy chắc chắn đặt TRI = "0". DFM: Đặt chế độ truyền các dữ liệu vào bộ nhớ RAM khi TRI = "1". 4.7.2.7 Thanh ghi điều khiển thay đổi kích thước (R04h) RSZ[1:0]: Thiết lập yếu tố thay đổi kích thước. Khi các bit RSZ được đặt cho thay đổi kích thước, ILI9320 ghi dữ liệu theo yếu tố thay đổi kích thước để mà hình ảnh ban đầu được hiển thị ở kích thước ngang và dọc, được rút ngắn theo các yếu tố tương ứng. RCH[1:0]: Thiết lập một lượng điểm ảnh trên phần còn lại theo hướng ngang khi thay đổi kích thước một hình ảnh. Bằng cách xác định số lượng điểm ảnh trên phần còn lại do bit RCH, dữ liệu có thể được chuyển mà không cần lấy các điểm ảnh nhắc nhở vào xem xét. RCV[1:0]: Thiết lập một lượng điểm ảnh trong phần còn lại hướng thẳng đứng khi thay đổi kích thước một hình ảnh. Bằng cách xác định số lượng điểm ảnh trên phần còn lại do bit RCV, dữ liệu có thể được chuyển mà không cần lấy các điểm ảnh nhắc nhở vào xem xét. 4.7.2.8 Các thanh ghi điều khiển hiển thị Điều khiển hiển thị 1 (R07h) D [1:0] = "11" để bật bảng hiển thị. D [1:0] = "00" để tắt bảng hiển thị. D1 = "1" Một màn hình đồ họa được bật lên bảng. D1 = "0" Một màn hình đồ họa được tắt. CL : Khi CL = "1", với 8 chế độ hiển thị màu sắc được chọn. GON và DTE : Đặt mức đầu vào của trình điều khiển cổng G1-G320 như sau BASEE: Base image display enable bit. Khi BASEE = "0", không có căn cứ hình ảnh được hiển thị. ILI9320 điều khiển tinh thể lỏng ở cấp độ ánh sáng không hiển thị hoặc chỉ hiển thị hình ảnh một phần. Khi BASEE = "1", hình ảnh cơ bản được hiển thị. Cài đặt D [01:00] có ưu tiên cao hơn so với cài đặt BASEE. PTDE[1:0]: Partial image 2 and Partial image 1 enable bits. PTDE1/0 = 0: tắt một phần hình ảnh. Chỉ căn cứ hình ảnh được hiển thị. PTDE1/0 = 1: bật một phần hình ảnh. Đặt BASEE = 0. Điều khiển hiển thị 2 (R08h) FP[3:0]/BP[3:0]. Các bit FP[3:0] và BP[3:0] chỉ định số dòng mặt trước và sau thời kỳ porch tương ứng. Khi các giá trị thiết lập FP[3:0] và BP[3:0], các điều kiện sau đây được đáp ứng: BP + FP ≤ 16 dòng FP ≥ 2 dây chuyền BP ≥ 2 dây chuyền. Đặt BP[3:0] và FP[3:0] bit như dưới đây cho từng phương thức hoạt động. FP[3:0] Number of lines for Front Porch BP[3:0] Number of lines for Back Porch 0000 Setting Prohibited 0001 Setting Prohibited 0010 2 lines 0011 3 lines 0100 4 lines 0101 5 lines 0110 6 lines 0111 7 lines 1000 8 lines 1001 9 lines 1010 10 lines 1011 11 lines 1100 12 lines 1101 13 lines 1110 14 lines 1111 Setting Prohibited Điều khiển hiển thị 3 (R09h) ISC[3:0] : Chỉ định khoảng chu kỳ quét của bộ điều khiển cổng tại khu vực không hiển thị khi PTG[1:0] = "10" để chọn khoảng thời gian quét. Sau đó chu kỳ quét được thiết lập như là số lẻ từ 0 đến 31 khung thời gian. Phân cực là đảo ngược mỗi chu kỳ quét. PTG[1:0]: Đặt chế độ quét trong khu vực không hiển thị. PTS[2:0]: Thiết lập mức độ đầu ra nguồn trong khoảng thời gian điều khiển khu vực không hiển thị (trước/sau thời kỳ porch và diện tích trống giữa hiển thị một phần). Điều khiển hiển thị 4 (R0Ah) FMI[2:0]: Đặt khoảng thời lượng đầu ra của tín hiệu FMARK theo chu kỳ dữ liệu hiển thị ghi lại và tốc độ truyền dữ liệu. FMARKOE: Khi FMARKOE = 1, ILI9320 bắt đầu ra tín hiệu FMARK trong khoảng đầu ra được set do FMI[2:0] bit. 4.7.2.9 Điều khiển giao diện hiển thị RGB Điều khiển giao diện hiển thị RGB 1 (R0Ch) RIM[1:0]: Chọn chiều rộng giao tiếp dữ liệu RGB. DM[1:0]: Chọn chế độ hoạt động hiển thị. DM1 DM0 Display Interface 0 0 Internal system clock 0 1 RGB interface 1 0 VSYNC interface 1 1 Setting disabled Các thiết lập DM[1:0] cho phép chuyển đổi giữa các chế độ clock hoạt động nội bộ và chế độ hoạt động giao tiếp hiển thị bên ngoài. Tuy nhiên, chuyển đổi giữa các chế độ hoạt động giao tiếp RGB và chế độ hoạt động giao tiếp VSYNC đều bị cấm. RM: Chọn giao tiếp để truy cập GRAM. Set RM sang "1" khi ghi dữ liệu hiển thị bằng giao tiếp RGB. ENC[2:0]: Đặt chu kỳ ghi GRAM thông qua giao tiếp RGB. Điều khiển giao diện hiển thị RGB 2 (R0Fh) DPL: Thiết lập tín hiệu phân cực của chân DOTCLK. DPL = "0": Dữ liệu là đầu vào trên cạnh lên của DOTCLK. DPL="1": Dữ liệu là đầu vào trên cạnh xuống của DOTCLK. EPL: Thiết lập tín hiệu phân cực của chân ENABLE. EPL="0" Các dữ liệu DB17-0 được ghi khi ENABLE="0". Vô hiệu hoá hoạt động ghi dữ liệu khi ENABLE="1". EPL="1" Các dữ liệu DB17-0 được ghi khi ENABLE="1". Vô hiệu hoá hoạt động ghi dữ liệu khi ENABLE="0". HSPL: Thiết lập tín hiệu phân cực của chân HSYNC. HSPL="0": kích hoạt LOW. HSPL="1": kích hoạt HIGH. VSPL: Thiết lập tín hiệu phân cực của chân VSYNC. VSPL="0": kích hoạt LOW. VSPL="1": kích hoạt HIGH. 4.7.2.10 Điều khiển nguồn Điều khiển nguồn 1 (R10h) SLP: Khi SLP = 1, ILI9320 vào chế độ ngủ và hoạt động hiển thị dừng ngoại trừ oscillator RC để giảm tiêu thụ điện năng. Trong chế độ ngủ, dữ liệu GRAM và hướng dẫn không thể được cập nhật, ngoại trừ hai hướng dẫn sau đây. a. Thoát khỏi chế độ ngủ (SLP = "0") b. Bắt đầu dao động DSTB: Khi DSTB = 1, ILI9320 vào chế độ chờ sâu. Trong chế độ chờ sâu, cung cấp điện logic nội bộ bị tắt để giảm tiêu thụ điện năng. Các dữ liệu GRAM và thiết lập chỉ dẫn không được duy trì khi các ILI9320 vào chế độ chờ sâu, và nó phải được đặt lại sau khi thoát chế độ chờ sâu. AP[2:0]: Điều chỉnh hằng số hiện tại trong hoạt động mạch khuếch đại trong các mạch LCD cung cấp điện. Các hằng số lớn hơn hiện nay nâng cao khả năng điều khiển của LCD, nhưng nó cũng làm tăng mức tiêu thụ hiện tại. Điều chỉnh hằng số hiện tại lấy trade-off vào tài khoản giữa chất lượng hiển thị và tiêu thụ hiện tại. Trong thời kỳ không hiển thị, thiết lập AP[2:0] = "000" để ngăn chặn các hoạt động mạch khuếch đại và bước lên mạch để giảm tiêu thụ hiện tại. SAP: Kiểm soát đầu ra Driver nguồn SAP = 0, đầu ra điều khiển nguồn bị vô hiệu hoá. SAP = 1, đầu ra điều khiển nguồn được kích hoạt. Khi bắt đầu charge-pump của LCD trong giai đoạn Power ON, hãy chắc chắn rằng SAP = 0, và cài SAP = 1, sau khi bắt đầu lên các mạch LCD cung cấp năng lượng. APE: Bit cho phép cung cấp nguồn. Set APE = "1" để bắt đầu một thế hệ cung cấp điện theo trình tự cung cấp năng lượng khởi động. BT [3:0]: Đặt yếu tố được sử dụng ở mạch step-up. Chọn yếu tố step-up tối ưu cho điện áp hoạt động. Để giảm mức tiêu thụ năng lượng, thiết lập một yếu tố nhỏ hơn. Điều khiển nguồn 2 (R11h) VC[2:0]: Set yếu tố tỷ lệ VciLVL để tạo ra điện áp tham chiếu VciOUT và Vci1. . DC0[2:0]: chọn tần số hoạt động của các mạch step-up 1. Tần số step-up cao hoạt động nâng cao khả năng điều khiển của mạch step-up và chất lượng hiển thị nhưng làm tăng mức tiêu thụ hiện tại. Điều chỉnh tần số lấy trade-off giữa chất lượng hiển thị và tiêu thụ hiện nay vào tài khoản. DC1[2:0]: chọn tần số hoạt động của các mạch step-up 2. Tần số step-up cao hoạt động nâng cao khả năng điều khiển của mạch step-up và chất lượng hiển thị nhưng làm tăng mức tiêu thụ hiện tại. Điều chỉnh tần số lấy trade-off giữa chất lượng hiển thị và tiêu thụ hiện nay vào tài khoản. Điều khiển nguồn 3 (R12h) VRH[3:0]: Đặt tỷ lệ khuyếch đại (1,6-1,9) của VciLVL áp dụng cho đầu ra mức. PON: Điều khiển ON/OFF của đầu ra mạch 3 (VGL). VCMR: chọn một trong hai điện trở bên ngoài (VcomR) hoặc âm lượng điện nội bộ (VCM) để thiết lập tiềm năng điện của VcomH (VCOM cấp trung tâm điện áp). VCMR = 0 → Sử dụng điện trở biến đổi bên ngoài để điều chỉnh mức điện áp VcomH. VCMR =1 → Sử dụng âm lượng nội điện tử (VCM[4:0]) để điều chỉnh mức điện áp VcomH. Điều khiển nguồn 4 (R13h) VDV[4:0]: Chọn các yếu tố của VREG1OUT để thiết lập biên độ của VCOM xen điện áp từ 0,7 đến VREG1OUTx1,24. Set VDV[4:0] để cho VCOM biên độ ít hơn 6V. Điều khiển nguồn 7 (R29h) VCM[4:0]: Đặt điện áp VcomH nội. VCMR = 1, điện áp VcomH được tạo ra dựa trên VCM[4:0] thiết lập giá trị. VCMR = 0, điện áp VcomH được tạo ra dựa trên VCOMR áp tham khảo bên ngoài. 4.7.2.11 GRAM Horizontal/Vertical Address Set (R20h, R21h) AD[16:0] : Đặt giá trị ban đầu là address counter (AC). Các address counter (AC) được tự động cập nhật theo quy định để các thiết lập của AM, I/D bit như là dữ liệu được ghi vào GRAM nội bộ. AC không được cập nhật tự động khi đọc dữ liệu từ GRAM nội bộ. 4.7.2.12 Write Data to GRAM (R22h) Thanh ghi này là port truy cập GRAM. Khi cập nhật dữ liệu hiển thị thông qua thanh ghi này, AC là tăng/giảm tự động. 4.7.2.13 Read Data from GRAM (R22h) RD[17:0]: Đọc 18 bit dữ liệu từ GRAM thông qua đọc dữ liệu thanh ghi (RDR). 4.7.2.14 Frame Rate and Color Control (R2Bh) EXT_R: Chọn điện trở bên ngoài hoặc bên trong cho mạch dao động. FR_SEL[1:0]: Đặt tỷ lệ khung hình khi điện trở bên trong được sử dụng cho mạch dao động. 4.7.2.15 Gamma Control (R30h-R3Dh) 4.7.2.16 Horizontal and Vertical RAM Address Position (R50h, R51h, R52h, R53h) HSA[7:0]/HEA[7:0]: HSA[7:0] và HEA[7:0] đại diện cho các địa chỉ tương ứng mở đầu và kết thúc của khu vực cửa sổ địa chỉ theo hướng ngang. Bằng cách đặt bit HSA và HEA, có thể hạn chế các khu vực trên GRAM theo chiều ngang cho dữ liệu ghi vào. Bit HSA và HEA phải được đặt trước khi bắt đầu hoạt động ghi RAM. Trong thiết lập các bit, chắc chắn "00"h ≤ HSA[7:0] < HEA[7:0] ≤ "EF" h và "04" h ≤ HEA-HAS. VSA[8:0]/VEA[8:0]: VSA[8:0] và VEA[8:0] đại diện cho các địa chỉ tương ứng mở đầu và kết thúc của khu vực địa chỉ cửa sổ theo hướng thẳng đứng. Bằng cách đặt bit VSA và VEA, có thể hạn chế các khu vực trên GRAM theo chiều dọc để ghi dữ liệu. Các bit VSA và VEA phải được đặt trước khi bắt đầu hoạt động ghi RAM. Trong cài đặt, hãy chắc chắn "000" h ≤ VSA[8:0] < VEA[8:0] ≤ "13F" h. Hình 4.14 Cấu hình dãy truy cập GRAM 4.7.2.17 Gate Scan Control (R60h, R61h, R6Ah) SCN[5:0]: ILI9320 cho phép để xác định đường cổng mà từ đó các trình điều khiển cổng bắt đầu quét bằng cách thiết lập bit SCN[5:0]. NL[5:0]: Bộ số dòng vào ổ đĩa LCD tại một khoảng thời gian của 8 dòng. Việc lập bản đồ địa chỉ GRAM không bị ảnh hưởng bởi số lượng các dòng do NL[5:0]. Số lượng dòng phải có cùng hoặc nhiều hơn số dòng cần thiết cho kích thước của bảng tinh thể lỏng. NDL: Đặt mức đầu ra trình điều khiển nguồn trong các khu vực không hiển thị. GS: Đặt hướng quét bởi trình điều khiển cổng trong phạm vi xác định bởi SCN[4:0] và NL[4:0]. Việc hướng quét xác định bởi GS = 0 có thể đảo ngược bằng cách đặt GS = 1. Khi GS = 0, hướng quét là từ G1 đến G320. Khi GS = 1, hướng quét là từ G320 đến G1. REV: Cho phép các đảo ngược grayscale của hình ảnh bằng cách thiết lập REV = 1. VLE: Vertical scroll display enable bit. Khi VLE = 1, ILI9320 bắt đầu hiển thị hình ảnh cơ sở từ dòng (trong màn hình vật lý) xác định bởi VL[8:0] bit. VL[8:0] đặt một lượng cuộn , đó là số dòng để thay đổi dòng đầu hiển thị từ dòng đầu tiên của màn hình vật lý. Lưu ý rằng một phần hình ảnh hiển thị vị trí không bị ảnh hưởng bởi sự cuộn hình ảnh cơ bản. Việc cuộn dọc không có sẵn trong hoạt động ngoại giao diện hiển thị. Trong trường hợp này, hãy chắc chắn để thiết lập VLE = "0". VL[8:0]: Đặt một lượng cuộn ngang của hình ảnh cơ bản. Các hình cơ bản là cuộn theo hướng dọc và hiển thị từ dòng xác định bởi VL[8:0]. Hãy chắc chắn rằng VL[8:0] ≤ 320. 4.7.2.18 Hình ảnh riêng phần Partial Image 1 Display Position (R80h) PTDP0[8:0]: Đặt vị trí hiển thị các hình ảnh phần 1. Các vùng hiển thị của hình ảnh phần 1 và 2 không được trùng nhau. Partial Image 1 RAM Start/End Address (R81h, R82h) PTSA0[8:0], PTEA0[8:0]: Thiết lập địa chỉ dòng bắt đầu và kết thúc dòng địa chỉ của vùng RAM lưu trữ dữ liệu của hình ảnh một phần 1. Và chắc chắn rằng PTSA0[8:0] ≤ PTEA0[8:0]. Partial Image 2 Display Position (R83h) PTDP1[8:0]: Đặt vị trí hiển thị các hình ảnh phần 2. Các khu vực hiển thị của hình ảnh phần 1 và 2 không được trùng nhau. Partial Image 2 RAM Start/End Address (R84h, R85h) PTSA1[8:0], PTEA1[8:0]: Thiết lập địa chỉ dòng bắt đầu và dòng địa chỉ kết thúc của vùng RAM lưu trữ dữ liệu của hình ảnh phần 2. Hãy chắc chắn rằng PTSA1[8:0] ≤ PTEA1[8:0]. 4.8 Màn hình cảm ứng 4.8.1 Giới thiệu Màn hình cảm ứng thuần trở là 1 loại cảm biến có chức năng chuyển đổi vị trí vật lý tại điểm chạm vào (X,Y) thành tín hiệu điện biểu diễn cho giá trị X và tín hiệu điện biểu diễn cho giá trị Y. Màn hình có thể dùng 4 hay 5 hay 7 hay 8 dây để tạo điện áp phân cực và đọc về điện áp ở chỗ tiếp xúc. Vi điều khiển SHARP như LH75400/01/10/11, LH7A404 sử dụng khối ADC với mạch phân cực tích hợp sẵn cho phép tạo một giao thức liên kết giữa màn hình cảm ứng và vi điều khiển. 4.8.2 Nguyên lý ADC Khối ADC của SHARP sử dụng Successive Approximation Register (SAR) loại chuyển đổi. 4.8.3 Kiến trúc SAR Hình 4.15 Kiến trúc N-bit SAR đơn giản Đây là kiến trúc cơ bản của SAR. Bộ comparator có chức năng so sánh 2 tín hiệu VIN và VDAC: Nếu VIN<VDAC thì bit MSB trong thanh ghi N-bit được xóa về 0. Nếu VIN>VDAC thì bit MSB trong thanh ghi N-bit được set lên 1. SAR control logic tiếp tục dịch chuyển đến bit kế tiếp và đem bit này so sánh cho đến khi đến bit LSB. Khi đó quá trình chuyển đổi hoàn thành, word N-bit được chuyển vào thanh ghi. Hình 4.16 Ví dụ về hoạt động SAR ADC 4 bit 4.8.4 Nguyên lý màn hình cảm ứng Màn hình cảm ứng được làm từ 2 lớp trong suốt. Màn hình cảm ứng 4 dây và 8 dây được làm từ 2 lớp trong suốt có tính thuần trở. Màn hình cảm ứng 5 dây và 7 dây được làm từ 1 lớp thuần trở và 1 lớp dẫn điện. Bình thường 2 lớp này tách biệt nhau, khi tiếp xúc đủ mạnh thì 2 lớp này tiếp xúc với nhau. Màn hình cảm ứng 4 dây Màn hình cảm ứng 4 dây được cấu tạo từ 2 lớp: 1 lớp có 2 vertical bus bar dọc 2 bên trái phải màn hình. 1 lớp có 2 horizontal bus bar ở bên trên và dưới màn hình như hình sau. Hình 4.17 Màn hình cảm ứng 4 dây Thanh bên trái 0V, thanh bên phải là VREF. Kết nối khối ADC vào thanh bên trên hay bên dưới và tiến hành đo khi 2 lớp tiếp xúc nhau. Thanh bên trên 0V, thanh bên dưới là VREF. Kết nối khối ADC vào thanh bên trái hay bên phải và tiến hành đo khi 2 lớp tiếp xúc nhau. Hình 4.18 Mạch tương đương màn hình cảm ứng 4 dây 4.8.5 Điều kiện Sensing Touch và No Touch Đối với tất cả các màn hình cảm ứng, bạn có thể thiết lập độ nhạy touch và notouch bằng cách kéo 1 lớp lên với điện trở kéo lên yếu và kéo lớp kia xuống với điện trở kéo xuống mạnh. Nếu điện áp đo được của lớp kéo lên trên mức ngưỡng thì no touch, ngược lại là touch. Phức tạp trong phương pháp này là màn hình cảm ứng là 1 tụ điện khổng lồ, đồng thời phải gắn thêm tụ để lọc ngõ ra màn hình. Điện trở kéo lên yếu kết nối với tụ có điện dung lớn lâu ngày sẽ dẫn đến sai lệch. Để đo touch pressure – lực chạm vào, chúng ta cần biết điện trở của 1 hay 2 lớp của màn hình hình 4.19 cho thấy làm thế nào để thực hiện các phép tính. Hình 4.19 Tính toán áp cho mà hình cảm ứng 4 dây 4.8.6 Cách dùng SHARP ADC Bảng 4.2 Thanh ghi HW Bảng 4.3 Thanh ghi LW 4.8.7 Hook up and Programming 4.8.7.1 4-wire Touch Screen Hookup and Programming Setup Hình 4.20, màn hình cảm ứng 4 dây kết nối với AN0-AN3, với các tụ điện và bộ lọc. Các bước lập trình: 1. Lập trình tất cả thanh ghi ghi ghi được của ADC bằng 0. 2. Đọc result register khi FIFO Status Register bit, FEMPTY (2) bằng 0. 3. lập trình chip registers. 4. Sử dụng hỏi vòng hay ngắt - driven measurement algorithm. Hình 4.20 4-wire Touch Screen Hookup C1 - C4 = 0.047 µF 4.8.7.2 Converting Result FIFO Values into Voltages and Screen Coordinates Kết quả FIFO trả về 16 bit với các đặc điểm: 10 bit có trọng số cao nhất là kết quả ADC. 4 bit có trọng số thấp nhất chú thích cho bảng Control Bank. Bit thứ 4 và 5 là bit dự trữ. Để tách biệt kết quả chuyển đổi, ta dịch kết quả đọc từ kết quả FIFO sang phải 6 lần (chia cho 64). Để chuyển đổi giá trị đo FIFO thành điện áp (V), nhân kết quả đo đã được dịch phải với mức điện áp tham chiếu và chia cho 0x3FF. Để chuyển đổi giá trị đo trục X thành screen coordinate, ta nhân giá trị thanh ghi kết quả đã được dịch phải với (độ rộng màn hình – 1) và chia cho 0x3FF. Để chuyển đổi giá trị đo trục Y thành screen coordinate, ta nhân giá trị thanh ghi kết quả đã được dịch phải với (độ cao màn hình – 1) và chia cho 0x3FF. Nếu giá trị touch X giảm khi điểm touch di chuyển từ trái sang phải, không thay đổi dây. Lấy (độ rộng màn hình – 1) trừ đi giá trị X. Giá trị Y có thể tăng hoặc giảm từ dưới lên trên cùng màn hình. Nếu giá trị trục Y tăng khi chúng cần được giảm thì lấy (độ cao màn hình – 1) trừ đi giá trị trục Y. 4.8.7.3 Making Polled Measurements Hỏi vòng là cách tốt nhất để thực hiện phép đo. Thiết lập measurement sequencer cho softtriggered measurements bằng cách ghi 0b10 vào vùng SSM. field của the General Configuration register. Để trigger measurement, lập trinh bit SSB của thanh ghi General Configuration bằng 1. Để tiết kiệm năng lượng, Idle Low Word = 0. Để thực hiện polled measurement: 1. Ghi 1 vào bit EOSINTC của thanh ghi Interrupt Clear Register. 2. Delay khoảng 100 ms. 3. Trigger a measurement bằng cách ghi 1 vào bit SSB của thanh ghi General Configuration Register. 4. Hỏi vòng thanh ghi Interrupt Status Register cho đến khi bit EOSINTR_UM được set lên 1. 5. Đọc và loại bỏ giá trị đầu tiên (VDDA_ADC). 6. Đọc giá trị thứ 2. Đây là giá trị đo đầu tiên được phát hiện Nếu giá trị đó trên mức ngưỡng: Đọc và ghi nhận là no touch detected. Nhảy đến bước 10 Nếu giá trị đó dưới mức ngưỡng: Đọc và lấy trung bình, xác định được tọa độ X, tọa độ Y Đọc và loại bỏ giá trị đo kế 7. Đọc giá trị cuối. đây là giá trị thứ hai được phát hiện Nếu giá trị đó trên mức ngưỡng: Quay lại giá trị X, Y cũ Ghi nhận là no touch detected. Ngược lại, ghi nhận là detected. 8. Nếu trạng thái trước là touch detected và trạng thái hiện tại là no touch detected thì tiếp tục đợi. 9. Nếu trạng thái trước là no touch detected và trạng thái hiện tại là touch detected hay cả trạng thái trước và trạng thái hiện tại đều là touch detected thì báo là phát hiện tọa độ X,Y mới. 10. Make the current state of the screen (touch state and coordinates) the new previous state of the touch screen. 11. Read the remaining non-touch screen results from the result FIFO (if any), and process them accordingly. 4.8.7.4 Making Interrupt-driven Measurements Để tiết kiệm năng lượng ta sử dụng ngắt Timer. Sử dụng ngắt PENIRQ để phát hiện việc chạm vào vì tiến hành phân cực cho màn hình. Cài đặt timer interrupt: 1. Xóa ngắt timer. 2. Trigger a measurement bằng cách ghi 1 vào bit SSB của General Configuration Register. 3. Đọc và xóa giá trị đầu tiên. 4. Đọc giá trị thứ 2. Đây là giá trị đo đầu tiên được phát hiện nếu nó trên mức ngưỡng thì loại bỏ, nhảy đến bước 11. Ngược lại 5. Đọc và lấy trung bình, xác định được tọa độ X. 6. Đọc và lấy trung bình, xác định được tọa độ Y. 7. Đọc và loại bỏ giá trị đo kế tiếp. 8. Khi có được tọa độ X,Y thì khởi động timer và thoát. Nếu chưa có được tọa độ X,Y nào Thay đổi Idle Word Register phân cực cho màn hình để phát hiện touch. Cho phép Touch Detect Interrupt. Ghi 0b01 vào trường bit SSM của General Configuration Register để cho phép touch-triggered measurements. exit Cài đặt touch detect interrupt handler (PENIRQ) to: 1. Disable the touch detect interrupt. 2. Clear the touch detect interrupt. 3. Change the Idle Word Register để touch screen không phân cực trong suốt trạng thái idle. 4. Enable soft-triggered measurements bằng cách ghi 0b10 vào SSM bit của thanh ghi General configuration register. 5. Clear the timer interrupt. 6. Clear the timer. Để khởi tạo hệ thống: 1. Disable IRQ Exceptions. 2. Thiết lập ADC phần Hookup and Programming section cho loại màn hình sử dụng. 3. Thiết lập timer để tạo ngắt. 4. Cài đặt interrupt handlers. 5. Cài đặt ADC để phát hiện touch bằng cách ghi 0b01 vào SSM field of the General Configuration Register. 6. Enable IRQ Exceptions. 4.9 Cấu trúc BMP Trong đồ họa máy tính, BMP còn được biết đến với tên khác là Windows bitmap, là một định dạng tập tin hình ảnh khá phổ biến. Các tập tin đồ họa lưu dưới dạng BMP thường có đuôi là .BMP hoặc .DIB (Device Independent Bitmap). Các thuộc tính tiêu biểu của một tập tin ảnh BMP cũng như file ảnh nói chung là: Số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP n bit có 2n màu. Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn. Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu). Ảnh BMP 24 bit có chất lượng hình ảnh trung thực nhất. Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel). Chiều rộng của ảnh (width), cho bởi điểm ảnh (pixel). Cấu trúc tập tin ảnh BMP bao gồm 4 phần: Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap. Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển thị ảnh. Color Palette (4*x bytes), x là số màu của ảnh: định nghĩa các màu sẽ được sử dụng trong ảnh. Bitmap Data: lưu dữ liệu ảnh. 4.9.1 Header BMP Khối byte này ở đầu tập tin và được sử dụng để nhận dạng tập tin. Một ứng dụng điển hình lần đọc đầu tiên của khối này để đảm bảo rằng các tập tin thực sự là một tập tin BMP và nó không hư hỏng. Hai byte đầu tiên của định dạng file BMP là ký tự 'B', sau đó là ký tự 'M' trong việc giải mã 1 byte. Tất cả các giá trị số nguyên được lưu trữ ở định dạng little-endian (tức là byte đầu tiên quan trọng nhất). Bảng 4.4 Header của file BMP Offset # Cỡ Mục đích 0000h 2 bytes Các số ma thuật được sử dụng để xác định tập tin BMP: 0x42 0x4D (mã Hex là B và M). Các mục sau đây có thể là: BM - Windows 3.1x, 95, NT, ... BA - OS / 2 Bitmap Array CI - OS / 2 màu Icon CP - OS / 2 màu Pointer IC - OS / 2 Icon PT - OS/2 Pointer 0002h 4 bytes Kích thước của tập tin BMP trong byte 0006h 2 bytes Giá trị thực tế phụ thuộc vào các ứng dụng mà tạo ra hình ảnh 0008h 2 bytes Giá trị thực tế phụ thuộc vào các ứng dụng mà tạo ra hình ảnh 000Ah 4 bytes Các offset tức là bắt đầu từ địa chỉ, số của byte, nơi dữ liệu bitmap có thể được tìm thấy. 4.9.2 Thông tin BMP Khối byte cho các ứng dụng thông tin chi tiết về các hình ảnh, sẽ được sử dụng để hiển thị hình ảnh trên màn hình. Khối này cũng phù hợp với tiêu đề được sử dụng nội bộ bởi Windows và OS/2 và có một vài biến thể khác nhau. Tất cả đều chứa một trường word, xác định kích thước của chúng, vì vậy mà một ứng dụng có thể dễ dàng xác định những tiêu đề được sử dụng trong hình ảnh. Bảng 4.5 Thông tin BMP Offset # Cỡ Mục đích Eh 4 Kích thước của tiêu đề này (40 byte) 12h 4 Chiều rộng bitmap in pixels (số nguyên). 16h 4 Chiều cao bitmap in pixels (số nguyên). 1Ah 2 Số lượng plane màu đang được sử dụng. Phải được đặt 1. 1Ch 2 Số bit cho mỗi điểm ảnh, là độ sâu màu của hình ảnh. Giá trị tiêu biểu là 1, 4, 8, 16, 24 và 32. 1Eh 4 Phương pháp nén được sử dụng 22h 4 Kích thước hình ảnh. Đây là kích thước của dữ liệu bitmap thô (xem bên dưới), và không nên nhầm lẫn với các kích thước tập tin. 26h 4 Độ phân giải ngang của hình ảnh. (pixel cho mỗi mét,số nguyên) 2Ah 4 Độ phân giải dọc của hình ảnh. (pixel cho mỗi mét, số nguyên) 2Eh 4 Số lượng màu trong bảng màu, hay 0 để mặc định để 2 n. 32h 4 Số lượng các màu sắc quan trọng được sử dụng, hoặc 0 khi mọi màu sắc là rất quan trọng, thường bị bỏ qua. 4.9.3 Color Palette Palette được đặt ở BMP tập tin trực tiếp sau khi tiêu đề BMP và tiêu đề DIB. Do đó, offset của nó là kích thước của các tiêu đề BMP cộng với kích thước của tiêu đề DIB. Palette là một khối byte (một bảng) danh sách các màu có sẵn để sử dụng trong một lập chỉ mục-màu sắc hình ảnh cụ thể. Mỗi điểm ảnh trong hình ảnh được mô tả bởi một số bit (1, 4, hoặc 8) mà chỉ một màu duy nhất trong bảng này. Mục đích của bảng màu trong bitmap màu lập chỉ mục-là nói với các ứng dụng thực tế rằng mỗi màu sắc của các chỉ số tương ứng với giá trị. DIB luôn luôn sử dụng các mô hình màu RGB. Trong mô hình này, màu sắc là điều kiện của một cường độ khác nhau (0-255) của các màu cơ bản phụ gia màu đỏ (R), màu xanh lá cây (G), và màu xanh (B). Màu sắc là như vậy, được xác định bằng cách sử dụng 3 giá trị R, G và B (mặc dù được lưu giữ trong thứ tự ngược trong mỗi mục nhập bảng màu). Số lượng các mục trong bảng này là cả 2n hoặc một số nhỏ hơn quy định trong tiêu đề. Mỗi mục chứa bốn byte, ngoại trừ trong trường hợp của OS/2 phiên bản V1, trong trường hợp chỉ có ba byte cho mỗi mục. Đầu tiên (và duy nhất cho OS/2 V1) 3 byte lưu các giá trị cho màu xanh dương, xanh lá cây, và màu đỏ, tương ứng, trong khi một cuối cùng là không sử dụng và được làm đầy với 0 bởi hầu hết các ứng dụng. Như đã đề cập ở trên, các bảng màu không được sử dụng khi bitmap là 16 bit hoặc cao hơn; không có palette byte trong các tập tin BMP. 4.9.4 Dữ liệu BMP Khối byte mô tả các hình ảnh, pixel by pixel. Điểm ảnh được lưu trữ "upside-down" đối với raster hình ảnh bình thường quét tự, bắt đầu từ góc dưới bên trái, đi từ trái sang phải, và sau đó liên tiếp bởi dòng từ dưới lên phía trên của hình ảnh. Windows bitmap không nén cũng có thể được lưu trữ từ dòng đầu đến cuối, nếu giá trị chiều cao hình ảnh là phủ định. Trong DIB gốc, bốn con số chỉ hợp pháp của bit/pixel là 1, 4, 8, và 24. Trong mọi trường hợp, mỗi dòng các điểm ảnh được mở rộng tới 32 bit (4 byte), điền với một giá trị không xác định (không nhất thiết phải là 0) sao cho các hàng tiếp theo sẽ bắt đầu ngày một nhiều-của-byte vị trí trong bộ nhớ hoặc trong tập tin. Tổng số byte trong một hàng có thể được tính như là kích thước hình ảnh / bitmap chiều cao bằng pixel. Tiếp theo những quy tắc này có một số cách để lưu trữ dữ liệu điểm ảnh tùy thuộc vào chiều sâu màu sắc và kiểu nén của các bitmap. 1 bit (hai màu, ví dụ màu đen và trắng) thì giá trị điểm ảnh được lưu trữ trong mỗi bit, với sự đầu tiên (trái nhất) pixel trong bit quan trọng nhất của byte đầu tiên. Một bit sẽ unset tham khảo các mục nhập đầu tiên của bảng màu, và một bit thiết lập sẽ tham khảo (cuối thứ hai) mục nhập bảng. 4 bit màu (16 màu sắc) được lưu giữ với 4 pixel trên mỗi byte, trái-pixel nhất là trong nibble hơn đáng kể. Mỗi giá trị điểm ảnh là một chỉ số vào một bảng lên đến 16 màu. 8 bit màu (256 màu) được lưu giữ 1 giá trị pixel trên mỗi byte. Mỗi byte là một chỉ số vào và một bảng lên đến 256 màu. Màu RGB (24 bit) các giá trị điểm ảnh được lưu với byte như BGR (xanh dương, xanh lá, màu đỏ). Byte Padding được chèn vào để giữ các dòng dữ liệu trong bội số của bốn. Ví dụ như, một bitmap 24 bit với chiều rộng 1 sẽ có 3 byte của dữ liệu trên mỗi dòng (màu xanh, xanh, đỏ) do đó 1 byte của padding, chiều rộng 2 sẽ có 2, chiều rộng 3 sẽ có 3, và chiều rộng 4 sẽ không có nào cả. Chú ý : Đặc điểm nổi bật nhất của định dạng BMP là tập tin hình ảnh thường không được nén bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin, một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh. Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với các ảnh được nén (chẳng hạn GIF, JPEG hay PNG). Định dạng BMP được hỗ trợ bởi hầu hết các phần mềm đồ họa chạy trên Windows, và cả một số ứng dụng chạy trên MS-DOS. Ngay từ Windows 3.1, Microsoft đã cho ra đời phần mềm PaintBrush, một phần mềm hỗ trợ vẽ hình ảnh đơn giản và lưu hình ảnh được vẽ dưới dạng BMP 16 hay 256 màu. Tuy nhiên, do kích thước tập tin ảnh BMP quá lớn, định dạng BMP không phù hợp để trao đổi hình ảnh qua mạng Internet (do hạn chế về tốc độ truyền dữ liệu). Do đó, các trang web thường sử dụng ảnh dạng GIF, JPEG hay PNG. Các định dạng này hỗ trợ các thuật toán nén hình ảnh, vì vậy có thể giảm bớt kích cỡ của ảnh. CHƯƠNG 5 MP3 AUDIO DECODER VS1011e 5.1 Giới thiệu Hình 5.1 VS1011e 5.1.1 Chức năng - Giải mã audio MPEG 1.0 và 2.0 lớp III (MP3: CBR, VBR, ABR), lớp I và II (MP1, MP2), WAV (PCM + IMA ADPCM). - Giải mã được 320 Kbit/s MP3 với 12.0 MHz clock ngoài. - Hỗ trợ hầu hết các định dạng audio. - Điều khiển bass và treble. - Hoạt động với 12.0 đến 13.0 MHz chế độ đơn hay 24.0 đến 26.0 MHz clock ngoài. - Nhân đôi clock nội. - Hoạt động ở chế độ điện năng thấp. - Stereo DAC chất lượng cao không có nhiễu giữa các kênh. - Bộ điều khiển tai nghe stereo với khả năng lái tải 30Ω. - Tách rời 2.5V đến 3.6V điện áp hoạt động cho tương tự và số. - Điều khiển cổng nối tiếp và các giao tiếp dữ liệu. - Có thể được dùng như một slave hợp tác xử lý. - 5.5 KiB RAM On Chip được dùng cho code/data của người dùng. - Khởi động SPI cho các ứng dụng độc lập. - Các chức năng mới có thể được thêm vào với phần mềm và 4 chân GPIO. 5.1.2 Sơ đồ khối VS1011e là một mạch tích hợp chip đơn mã hóa MPEG audio (MP3). Mạch chứa một DSP hiệu suất cao, điện năng thấp với bộ xử lý lõi VS DSP4, bộ nhớ làm việc có 5KiB RAM hướng dẫn và 0,5 KiB RAM dữ liệu cho các ứng dụng người dùng, giao tiếp điều khiển nối tiếp dữ liệu đầu vào, 4 chân I/O mục đích chung, một DAC âm thanh chất lượng cao với tỷ lệ lấy mẫu thay đổi được, được theo sau là một bộ khuếch đại tai nghe và một bộ đệm phổ biến. VS1011e nhận một chuỗi bit đầu vào thông qua bus ngõ vào nối tiếp, mà nó được xem như là một slave của hệ thống. Chuỗi bit đầu vào được giải mã và truyền thông qua một bộ điều khiển âm lượng kỹ thuật số để đến một DAC. Giải mã này được điều khiển thông qua một bus điều khiển nối tiếp. Ngoài ra, giải mã cơ bản có thể áp dụng thêm các tính năng đặc biệt như hiệu ứng DSP... VS1011e có thể khởi động trực tiếp từ SPI EEPROM để chạy các ứng dụng độc lập mà không cần một vi điều khiển riêng biệt. Hình 5.2 Sơ đồ khối VS1011e 5.2 Gói và sơ đồ chân 5.2.1 Gói Có 3 loại là LQFP-48, BGA-49 và SOIC-28. 5.2.1.1 LQFP-48 Hình 5.3 Pin Configuration, LQFP-48 5.2.1.2 BGA-49 Hình 5.4 Pin Configuration, BGA-49 5.2.1.3 SOIC-28 Hình 5.5 Pin Configuration, SOIC-28 5.2.2 Mô tả chân của LQFP-48 và BGA-49 Bảng 5.1 Chức năng các chân của VS1011e 5.3 Sơ đồ kết nối LQFP-48 Hình 5.6 Sơ đồ kết nối tiêu biểu sử dụng LQFP-48 Bộ đệm phổ biến GBUF có thể được sử dụng điện áp 1,24V cho tai nghe. Điều này sẽ loại bỏ nhu cầu cần tụ cô lập lớn trên dòng đầu ra, và do đó chân đầu ra âm thanh từ VS1011e có thể được kết nối trực tiếp với tai nghe. Nếu GBUF không được sử dụng, LEFT và RIGHT phải được cung cấp với tụ 1 đến 100µF tùy thuộc vào trở kháng tải. 5.4 Bus SPI 5.4.1 Tổng quát về SPI Các Bus SPI (Serial Protocol Interface) đầu tiên được sử dụng trong một số thiết bị Motorola đã được sử dụng cho cả Serial Data Interface (SDI) và Serial Control Interface (SCI) của VS1011e. 5.4.1.1 Chế độ VS1002 riêng (chế độ mới) Các chế độ này được kích hoạt trên VS1011e khi SM_SDINEW được set lên 1. DCLK và SDATA không được sử dụng để truyền dữ liệu và chúng có thể được sử dụng như là chân mục đích chung I/O (GPIO2 và GPIO3). Chức năng BSYNC thay đổi dữ liệu giao diện chọn chip (XDCS). Bảng 5.2 Chức năng các chân ở chế độ VS1002 Chân SDI Chân SCI Mô tả XDCS XCS Ngõ vào chọn chip tích cực thấp. Một mức cao ép cho giao diện nối tiếp vào chế độ chờ, kết thúc hoạt động hiện hành. Mức cao cũng ép cho ngõ ra nối tiếp (SO) vào trạng thái trở kháng cao. Nếu SM_SDISHARE là 1, chân XDCS không được sử dụng, nhưng tín hiệu được tạo ra bên trong bằng việc đảo ngược XCS. SCK Serial clock input. Serial clock cũng được sử dụng trong nội bộ như master clock cho register interface. SCK có thể được đóng mở liên tục. Trong cả hai trường hợp, cạnh lên đầu tiên của xung clock sau khi XCS xuống mức thấp đánh dấu bit đầu tiên được ghi. SI Serial input. Nếu chân chọn chip tích cực, SI được lấy mẫu ở cạnh lên của CLK. - SO Serial output. Khi đọc, dữ liệu được chuyển ra trên cạnh xuống của SCK. Khi ghi SO là ở trạng thái trở kháng cao. 5.4.1.2 Chế độ tương thích VS1001 Chế độ này được kích hoạt khi SM_SDINEW là 0 (mặc định). Trong chế độ này, DCLK, SDATA và BSYNC được kích hoạt. Bảng 5.3 Chức năng các chân ở chế độ VS1001 Chân SDI Chân SCI Mô tả - XCS Ngõ vào chọn chip tích cực thấp. Một mức cao ép cho giao diện nối tiếp vào chế độ standby, kết thúc hoạt động hiện hành. Một mức cao cũng ép cho ngõ ra nối tiếp (SO) vào trạng thái trở kháng cao. Không có chân chip chọn cho SDI và SDI luôn luôn tích cực. BSYNC - SDI data được đồng bộ với cạnh lên của BSYNC. DCLK SCK Serial clock input. Serial clock cũng được sử dụng bên trong như master clock cho register interface. SCK có thể được đóng mở liên tục. Trong cả hai trường hợp, cạnh lên đầu tiên của xung clock sau khi XCS xuống mức thấp đánh dấu bit đầu tiên được ghi. SDATA SI Serial input. SI được lấy mẫu trên cạnh lên của SCK nếu XCS ở mức thấp. - SO Serial output. Khi đọc, dữ liệu được chuyển ra ở cạnh xuống của SCK. Khi ghi, SO ở trạng thái trở kháng cao. 5.4.2 Serial Protocol for Serial Data Interface (SDI) Giao diện dữ liệu nối tiếp hoạt động trong chế độ slave. Như vậy, tín hiệu DCLK phải được tạo ra bởi một mạch bên ngoài. Dữ liệu (chân SDATA) có thể được định thời trong lúc hoặc cạnh lên hoặc cạnh xuống của DCLK. VS1011e giả định dữ liệu đầu vào sẽ được đồng bộ byte. Byte SDI có thể được truyền hoặc là MSB hoặc LSB đầu tiên, tùy theo nội dung của SCI_MODE. 5.4.2.1 SDI in VS1002 Native Modes (New Mode) Trong các chế độ VS1002, chân XDCS sẽ đồng bộ byte (hoặc XCS nếu SM_SDISHARE là 1). Trạng thái của XDCS (hoặc XCS) có thể không thay đổi trong khi một byte dữ liệu truyền được tiến hành. Để luôn duy trì đồng bộ hóa dữ liệu ngay cả khi có thể có ổn định trong các board bằng cách sử dụng VS1011e, được khuyên để chuyển XDCS (XCS) mỗi lúc hiện tại và sau đó, một lần sau mỗi khối hoặc vài Kb dữ liệu flash, chỉ chắc chắn các máy chủ lưu trữ và VS1011e đang đồng bộ. Đối với những thiết kế mới, sử dụng chế độ VS1002 riêng được khuyến khích. Hình 5.7 BSYNC Signal - one byte transfer 5.4.2.2 SDI in VS1001 Compatibility Mode Khi VS1011e đang chạy trong chế độ tương thích VS1001, tín hiệu BSYNC phải được phát ra để bảo đảm chỉnh bit đúng của chuỗi bit đầu vào. DCLK đầu tiên lấy mẫu (cạnh lên hoặc xuống, tùy thuộc vào chọn mức tích cực), trong đó BSYNC là cao, đánh dấu bit đầu tiên của một byte (LSB, nếu LSB được sử dụng, MSB nếu MSB được sử dụng). Nếu BSYNC là 1 khi bit cuối cùng được nhận, quá trình nhận vẫn tiếp tục hoạt động và 8 bit tiếp theo cũng được nhận. Hình 5.8 BSYNC Signal - two byte transfer 5.4.3 Serial Protocol for Serial Command Interface (SCI) 5.4.3.1 Tổng quan về SCI Giao thức bus nối tiếp cho SCI bao gồm một byte chỉ dẫn, một byte địa chỉ và một word dữ liệu 16 bit. Mỗi hoạt động đọc hoặc ghi có thể đọc hoặc ghi lên một thanh ghi đơn. Bit dữ liệu được đọc tại cạnh lên xung clock, vì vậy người sử dụng cần cập nhật dữ liệu tại cạnh xuống. Các byte luôn luôn gửi MSB trước. Hoạt động này được xác định bởi một opcode hướng dẫn 8 bit. Các hướng dẫn hỗ trợ được đọc và ghi như bảng dưới đây: 5.4.3.2 SCI Read Hình 5.9 SCI Word Read Thanh ghi VS1011e được đọc bằng cách sử dụng các trình tự sau, như trong hình 5.9. Trước tiên, dòng XCS được kéo xuống thấp để chọn thiết bị. Sau đó, các opcode READ (0x3) được truyền thông qua đường SI theo sau là một địa chỉ 8-bit. Sau khi địa chỉ đã được đọc, bất kỳ dữ liệu thêm về SI được bỏ qua bởi chip. Dữ liệu tương ứng 16 bit với địa chỉ nhận được sẽ được chuyển ra vào đường SO. XCS cần được điều khiển mức cao sau khi dữ liệu đã được chuyển ra ngoài. DREQ được điều khiển ở mức thấp trong một thời gian ngắn trong khi một hoạt động đọc bởi chip. Đây là một thời gian rất ngắn và không đòi hỏi sự chú ý đặc biệt của người dùng. 5.4.3.3 SCI Write Hình 5.10 SCI word write Thanh ghi VS1011e được viết từ việc sử dụng các trình tự sau, như trong hình trên. Trước tiên, dòng XCS được kéo xuống thấp để chọn thiết bị. Sau đó, các opcode WRITE (0x2) được truyền qua đường SI theo sau là một word địa chỉ 8 bit. Sau khi word đó đã được chuyển vào và clock cuối cùng đã được gửi, XCS nên được kéo lên cao để kết thúc chuỗi WRITE. Sau khi bit cuối cùng đã được gửi, DREQ được đưa xuống mức thấp trong thời gian cập nhật thanh ghi. Thời gian khác nhau tùy thuộc vào thanh ghi và nội dung của nó. Nếu thời gian tối đa là dài hơn những gì vi điều khiển mất để chuyển lệnh SCI hoặc byte SDI kế tiếp, trạng thái của DREQ phải được kiểm tra trước khi kết thúc hoạt động SCI/SDI kế tiếp. 5.4.4 Yêu cầu dữ liệu chân DREQ Chân DREQ được sử dụng để báo hiệu khả năng tiếp nhận dữ liệu của 2048 byte FIFO của VS1011e. Nếu DREQ là cao, VS1011e có thể mất ít nhất 32 byte data SDI hoặc một command SCI. Khi các tiêu chí này không được đáp ứng, DREQ được set xuống thấp, và người gửi phải ngừng chuyển các dữ liệu mới. Bởi vì một vùng 32 byte an toàn, người gửi có thể gửi tối đa 32 byte data SDI cùng một lúc mà không cần kiểm tra tình trạng của DREQ, làm cho việc kiểm soát VS1011e dễ dàng hơn cho vi điều khiển tốc độ thấp. Lưu ý: DREQ có thể bật cao hoặc thấp bất kỳ lúc nào, ngay cả trong khi truyền một byte. Vì vậy, DREQ chỉ nên được sử dụng để quyết định xem có gửi byte nữa hay không. Không nên bỏ quá trình truyền hiện đã được bắt đầu. 5.4.5 SPI Timing Diagram Hình 5.11 SPI Timing Diagram 25ns1 là khi pin được nạp với điện dung 100pF. Trong thời gian ngắn hơn với điện dung thấp hơn. 5.5 Mô tả chức năng 5.5.1 Tính năng chính VS1011e được dựa trên một bộ xử lý tín hiệu số độc quyền là VS_DSP. Nó chứa tất cả các bộ nhớ mã và dữ liệu cần thiết cho giải mã âm thanh MPEG, WAV PCM và WAV IMA ADPCM, cùng với giao tiếp nối tiếp, một bộ chuyển đổi DAC âm thanh stereo tốc độ cao, các bộ lọc và khuếch đại ngõ ra analog. VS1011e có thể hiểu tất cả các file MPEG 1.0 và 2.0 lớp I, II, III, cũng như các file MPEG 2.5 lớp III, với tất cả sample rate và bitrate, bao gồm variable bitrate (VBR) cho lớp III. Lưu ý rằng, việc giải mã các lớp I và II phải được kích hoạt riêng rẽ. 5.5.2 Các định dạng audio mà codec hỗ trợ 5.5.2.1 Định dạng MP1 (MPEG Layer I) 5.5.2.2 Định dạng MP2 (MPEG Layer II) 5.5.2.3 Định dạng MP3 (MPEG Layer III) 1 Còn tất cả các variable bitrate (VBR) các định dạng được hỗ trợ. Lưu ý: 24.0 MHz clock bên trong (24.0 MHz clock bên ngoài hay 12.0 MHz clock bên ngoài với bộ nhân đôi clock ) là đủ cho VS1011e để có thể giải mã tất cả các bitrates và tốc độ lấy mẫu với hoạt động kiểm soát tăng gấp 3. 5.5.2.4 Định dạng của RIFF WAV Định dạng phổ biến nhất được hỗ trợ là RIFF WAV. 5.5.3 Data Flow of VS1011e Hình 5.12 Data Flow of VS1011e Trước tiên, tùy thuộc vào dữ liệu âm thanh, âm thanh MPEG hoặc WAV được tiếp nhận và giải mã từ bus SDI. Sau khi giải mã, nếu SCI_AIADDR là không phải 0, mã ứng dụng được thực thi từ địa chỉ được trỏ đến bởi thanh ghi đó. Sau đó, dữ liệu có thể được gửi đến Bass và Treble Enhancer tùy thuộc vào SCI_BASS. Sau đó, tín hiệu được chuyển đến cho đơn vị điều chỉnh âm lượng, mà cũng lưu dữ liệu vào Audio FIFO. Các Audio FIFO giữ dữ liệu, được đọc bởi Audio interrupt và chuyển đến bộ chuyển đổi tỷ lệ mẫu và DACs. Kích thước của Audio FIFO là 512 stereo (2x16bit), hoặc 2 KiB. Bộ chuyển đổi tỷ lệ mẫu chuyển đổi tất cả các tỷ lệ mẫu khác nhau sang CLKI/512 và chuyển dữ liệu cho DAC, nơi mà nhằm tạo ra một tín hiệu tương tự âm thanh nổi. Tín hiệu này sau đó được chuyển đến bộ khuyếch đại tai nghe. 5.5.3.1 Giao tiếp dữ liệu nối tiếp (SDI) Giao diện dữ liệu nối tiếp có nghĩa là để chuyển dữ liệu âm thanh nén MP3, cũng như dữ liệu WAV. 5.5.3.2 Giao tiếp điều khiển nối tiếp (SCI) SCI là tương thích với các đặc điểm kỹ thuật bus SPI. Dữ liệu truyền luôn là 16 bit. VS1011e được kiểm soát bằng cách ghi và đọc các thanh ghi của giao diện. Các điều khiển chính của giao diện điều khiển là: • Kiểm soát của các chế độ hoạt động, clock, và các hiệu ứng gắn liền. • Truy cập thông tin trạng thái và header data. • Truy cập vào encoded digital data. • Tải lên các chương trình người sử dụng. • Cung cấp dữ liệu đầu vào. Thanh ghi SCI Bảng 5.4 Các thanh ghi SCI 5.6 Hoạt động 5.6.1 Clocking VS1011e hoạt động trên clock danh nghĩa duy nhất 24.576 MHz tần số cơ bản. Xung clock này có thể được tạo ra bởi mạch bên ngoài (kết nối với pin XTALI) hoặc bằng giao diện tinh thể nội bộ đồng hồ (pins XTALI và XTALO). Ngoài ra, bên ngoài 12,288 MHz có thể được tăng gấp đôi trong nội bộ clock đến 24,576 MHz. Điều này là đủ để clock hỗ trợ một chất lượng cao, sản lượng âm thanh cho tất cả các codec, tỷ lệ mẫu và bitrates, với bass và treble enhancers. 5.6.2 Hardware Reset Khi tín hiệu XRESET thấp, VS1011e được đặt lại và tất cả các thanh ghi kiểm soát nội bộ được thiết lập để các giá trị ban đầu. Tín hiệu XRESET là không đồng bộ với bất kỳ clock bên ngoài. Các chế độ cài lại tăng gấp đôi như là một chế độ toàn POWERDOWN, nơi mà cả hai kỹ thuật số và tương tự các bộ phận của VS1011e đang trong giai đoạn tối thiểu điện năng tiêu thụ, và nơi mà clock được ngừng lại. 5.6.3 Software Reset Trong một số trường hợp, các phần mềm giải mã đã được cài đặt lại. Điều này được thực hiện bằng cách kích hoạt bit 2 trong thanh ghi SCI MODE. Sau đó, chờ ít nhất 2¹s, sau đó xem xét DREQ. DREQ sẽ xuống mức thấp ít nhất 6.000 chu kỳ xung clock, có nghĩa là một khoảng 250¹s trì hoãn nếu VS1011e chạy 24.576 MHz. Sau khi DREQ là bạn có thể tiếp tục phát lại như bình thường. 5.6.4 SPI Boot Nếu GPIO0 được thiết lập với một điện trở kéo lên đến lúc khởi động thì VS1011e cố gắng để khởi động từ bộ nhớ SPI bên ngoài. SPI khởi động được định nghĩa tại các chân sau đây: Normal Mode SPI Boot Mode GPIO0 xCS GPIO1 CLK DREQ MOSI GPIO2 MISO Bộ nhớ này phải là một SPI Serial Bus EEPROM với địa chỉ 16 bit (tức là ít nhất 1 KiB). Tốc độ nối tiếp được sử dụng bởi VS1011e là 490 KHz với clock danh nghĩa 24.576 MHz. Ba byte đầu tiên trong bộ nhớ có thể 0x50, 0x26, 0x48. Định dạng ghi chính xác là giải thích trong Notes ứng dụng cho VS10XX. Nếu SPI khởi động thành công, SCI MODE là trái với giá trị 0x0800. 5.6.5 Play/Decode Đây là chế độ hoạt động bình thường của VS1011e. Dữ liệu SDI được giải mã. Những mẫu được giải mã sẽ được chuyển sang miền tương tự bởi DAC bên trong. Nếu không có dữ liệu giải mã được tìm thấy, SCI_HDAT0 và SCI_HDAT1 được set về 0 và ngõ ra tương tự được tắt. Khi không có đầu vào để giải mã, VS1011e đi vào chế độ idle (tiêu thụ điện năng thấp hơn trong suốt quá trình giải mã) và chủ động giám sát đầu vào dữ liệu nối tiếp để dữ liệu được hợp lệ. 5.6.6 Feeding PCM data VS1011e có thể được sử dụng như một bộ giải mã PCM bằng cách gửi cho nó một tiêu đề tập tin WAV. Nếu độ dài được gửi trong tập tin WAV là 0 hay 0xFFFFFFF, VS1011e PCM sẽ ở trong chế độ vô hạn định. Âm thanh 8 bit tuyến tính và 16 bit tuyến tính là hỗ trợ trong mono hoặc stereo. 5.6.7 SDI Tests Có một số chế độ thử nghiệm trong VS1011e, cho phép người sử dụng bộ nhớ để thực hiện các việc kiểm tra, thử nghiệm bus SCI, và một số thử nghiệm khác nhau dạng sóng sin. Tất cả các thử nghiệm được bắt đầu trong một cách tương tự: VS1011e cài đặt lại phần cứng, SM TESTS được thiết lập, và sau đó một lệnh kiểm tra được gửi tới bus SDI. Mỗi thử nghiệm được bắt đầu bằng cách gửi mỗi 4 byte lệnh đặc biệt theo trình tự, theo sau là 4 zero. 5.7 Các thanh ghi của VS1011e 5.7.1 Thanh ghi SCI 5.7.2 Thanh ghi dữ liệu nối tiếp 5.7.3 Thanh ghi DAC 5.7.4 Thanh ghi GPIO 5.8 Cấu trúc file MP3 5.8.1 Tổng quan về file MP3 MP3 là một dạng file đã được nén bằng cách nén dữ liệu mất đi (lossy). Nó là một dạng âm thanh PCM pulse-code modulation-encoded nhỏ hơn rất nhiều so với dữ liệu ban đầu do nó bỏ đi những phần âm thanh được cho là không quan trọng trong khoảng nghe được của con người. Có rất nhiều kỹ thuật đã được dùng trong chuẩn nén MP3 để xác định phần nào nên bỏ đi. Dữ liệu MP3 có thể được tạo ra với nhiều bit rate khác nhau để có thể dễ dàng chọn lựa giữa chất lượng cỡ tập tin đầu ra cao hay thấp. Cốt lõi của kỹ thuật nén MP3 là một dạng biến đổi phức để chuyển tín hiệu sóng ngang theo thời gian thành tín hiệu dựa theo tần số. 5.8.2 File cấu trúc Một tập tin MP3 được tạo thành nhiều khung MP3, trong đó bao gồm một tiêu đề và một khối dữ liệu. Dữ liệu nhạc MP3 chứa các khối (nén) thông tin âm thanh về tần số và biên độ. Hình 5.13 Cấu trúc file mp3 Bảng 5.5 MPEG Audio Frame Header Position Length Meaning Example 0 11 Khung đồng bộ để tìm tiêu đề (tất cả các bit là luôn luôn đặt) 11111111111 11 2 Audio version ID 00 - MPEG Phiên bản 2.5 (bản không chính thức mở rộng của MPEG 2) 01 - reserved 10 - MPEG Phiên bản 2 (ISO / IEC 13818-3) 11 - MPEG Phiên bản 1 (ISO / IEC 11172-3) 11 13 2 Layer index 00 - reserved 01 - Layer III 10 - Layer II 11 - Layer I 01 15 1 Bit bảo vệ 0 - bảo vệ bởi 16 bit CRC sau tiêu đề 1 - không có CRC 1 16 4 Bitrate index 1001 20 2 Sampling rate index 11 22 1 Padding-bit Nếu nó được thiết lập, dữ liệu được chèn với một khe cắm (quan trọng cho việc tính toán kích thước khung) 0 23 1 Private bit (chỉ có thông tin) 1 24 2 Channel mode 00 - Stereo 01 - Joint Stereo (Stereo) 10 - Dual channel (Two mono channels) 11 - Single channel (Mono) 01 26 2 Chế độ mở rộng (chỉ sử dụng trong Joint Stereo) 00 28 1 Copyright bit (chỉ có thông tin) 1 29 1 Original bit (chỉ có thông tin) 1 30 2 00 - none 01 - 50/15 ms 01 - 50/15 ms 10 - reserved 10 - reserved 11 - CCIT J.17 11 - CCIT J.17 Các chỉ nhấn mạnh ở đây là để cho các bộ giải mã rằng tập tin phải được nhấn mạnh, đó là việc giải mã phải 'tái cân bằng' sau khi một âm thanh Dolby-như ức chế tiếng ồn. Nó hiếm khi sử dụng. 00 Tỷ lệ lấy mẫu xác định có bao nhiêu mẫu trên giây được ghi lại. Mỗi phiên bản MPEG có thể xử lý tỷ lệ lấy mẫu khác nhau. Bảng 5.6 Các phiên bản MPEG và tỷ lệ lấy mẫu Sampling Rate Index MPEG 1 MPEG 2 (LSF) MPEG 2.5 (LSF) 00 44100 Hz 22050 Hz 11025 Hz 01 48000 Hz 24000 Hz 12000 Hz 10 32000 Hz 16000 Hz 8000 Hz 11 reserved Bitrates luôn được hiển thị kilobits trên mỗi giây. Lưu ý rằng tiền tố kilo (viết tắt với k nhỏ) không có nghĩa là 1.024 nhưng 1.000 bit/giây. Chỉ số bitrate 1111 được dành riêng và không bao giờ nên được sử dụng. Trong tiêu chuẩn âm thanh MPEG có một định dạng mô tả miễn phí. Điều này có nghĩa là các định dạng tập tin miễn phí được mã hóa với bitrate không đổi, đó không phải là một trong những bitrates định sẵn. Chỉ có rất ít bộ giải mã có thể xử lý các tập tin đó. Bảng 5.7 Bitrates (kilobits/s) Bitrate Index MPEG 1 MPEG 2, 2.5 (LSF) Layer I Layer II Layer III Layer I Layer II & III 0000 free 0001 32 32 32 32 8 0010 64 48 40 48 16 0011 96 56 48 56 24 0100 128 64 56 64 32 0101 160 80 64 80 40 0110 192 96 80 96 48 0111 224 112 96 112 56 1000 256 128 112 128 64 1001 288 160 128 144 80 1010 320 192 160 160 96 1011 352 224 192 176 112 1100 384 256 224 192 120 1101 416 320 256 224 128 1110 448 384 320 256 144 1111 reserved Trong MPEG 1 Layer II, chỉ có một số kết hợp của bitrates và các chế độ cho phép. Trong MPEG 2/2.5, không có giới hạn như vậy. Bảng 5.8 Bitrate được phép và chế độ kết hợp Bitrate Chế độ cho phép free Tất cả 32 Đơn kênh 48 Đơn kênh 56 Đơn kênh 64 Tất cả 80 Đơn kênh 96 Tất cả 112 Tất cả 128 Tất cả 160 Tất cả 192 Tất cả 224 stereo, intensity stereo, dual channel 256 stereo, intensity stereo, dual channel 320 stereo, intensity stereo, dual channel 384 stereo, intensity stereo, dual channel Để tính kích thước khung hình, cần có số lượng các mẫu cho mỗi khung âm thanh MPEG. Vì thế, ta có thể sử dụng bảng sau: Bảng 5.9 Mẫu/Frame MPEG 1 MPEG 2 (LSF) MPEG 2.5 (LSF) Layer I 384 384 384 Layer II 1152 1152 1152 Layer III 1152 576 576 Sau đó, bạn có thể tính toán kích thước khung như thế này: Frame Size = ((Samples Per Frame / 8 * Bitrate) / Sampling Rate) + Kích thước Padding Bởi vì các lỗi làm tròn, công thức chính thức để tính toán kích thước khung hình có khác nhau một ít. Theo tiêu chuẩn ISO, bạn cần phải tính toán kích thước khung trong khe sau đó cắt con số này thành một số nguyên, và sau đó nhân nó với kích thước khe. Thời gian phát nhạc : Duration = (File Size/Bitrate)*8. CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 Kết Luận Sau một quá trình nghiên cứu học tập, với sự nỗ lực của bản thân cùng với sự hướng dẫn tận tình của các Thầy, chúng em đã thực hiện đề tài luận văn của mình được như sau: 1. Tìm hiểu về: ARM7 LH79525. Giao tiếp IDE với ổ đĩa cứng. Chuẩn FAT32. LCD TFT&TSC. Giao tiếp với Codec VS1011e. 2. Kết quả thực hiện được trên kit (hình 6.1): Thực hiện các giao tiếp của ARM7LH79525 với các ngoại vi như ổ đĩa cứng, LCDTFT&TSC và Codec VS1011e. Truy xuất file hình ảnh trong ổ đĩa cứng và hiển thị lên LCD TFT. Truy xuất file âm thanh trong ổ đĩa cứng và phát ra loa thông qua Codec VS1011e. Tuy nhiên do thời gian thực hiện còn hạn chế cho nên chúng em chỉ thực hiện được các giao tiếp của ARM7LH79525 với các ngoại vi cơ bản, vẫn chưa có thể thực hiện hết các giao tiếp với đầy đủ các ngoại vi. 6.2 Hướng phát triển - Tìm hiểu sâu hơn về âm thanh và hình ảnh để có thể thực hiện truy xuất các file khác như JPEG, GIF, PNG, WAV… - Thực hiện thêm các chức năng trên kit: giao tiếp với USB, Ethernet. - Hướng đến các ứng dụng trong thiết bị cầm tay (PDA, Mobile..) và ngoại vi máy tính. Hình 6.1 Kit ARM thực hiện TÀI LIỆU THAM KHẢO [1] LH79524/LH79525 SoC User’s Guide Produced by the SHARP Microelectronics of the Americas MarCom Group. [2] William Lyons Road, The Insider’s guide to the philips ARM –base microcontrollers. [3] Data sheet LH79524/LH79525. [4] Data sheet LTI9320. [5] Paul Kovitz, Using the SHARP ADC with Resistive Touch Screens, Staff Engineer. [6] The ARM Instruction Set - ARM University Program - V1.0. [7] Data sheet VS1011e. [8] [9] [10] [11] [12] [13]

Các file đính kèm theo tài liệu này:

  • docam_thanh_hinh_anh_final.doc