Trích:
Nguyên văn bởi lybao_huy
mình chạy SPI chạy ở tốc độ 10Mhz => đọc 512 byte mất 409.6us. Lý do là: mình gửi lệnh đọc đơn khối, chờ khoảng 8 clock ,đọc đáp ứng lệnh, sau đó có thể chờ x (micro giây) để đọc token data, sau đó là dữ liêu. mình thấy thế này.
giá trị x này ở một số địa chỉ vật lý có thể chờ lên đến 1.4 mili giây, còn ở một số khác thì chỉ vài trăm micro giây, mình cũng không hiểu có này nữa.
|
Vì bạn sử dụng lệnh READ_SINGLE_BLOCK 2 lần để đọc 2 sector nên phải tốn 2 lần để chờ Data token.
Nếu bạn muốn đọc >=2 sector tốt nhất nên dùng lệnh READ_MULTIPLE_BLOCK, như vậy chỉ phải chờ Data token 1 lần nên tốc độ đọc sẽ cải thiện hơn rất nhiều.
Thông thường trong truyền thông, quy tắc chung là đọc/ghi 1 lần càng nhiều dữ liệu thì tốc độ càng cao vì giảm overhead.
Nếu bạn muốn tốc độ cao hơn nữa, dùng buffer lớn hơn, đọc nhiều sector hơn trong 1 lần, RAM của con dsPIC bạn dùng lên tới 16KB.
Ngoài ra bạn có thể viết code để lần đầu tiên chỉ đọc và dùng 468byte để xuất âm thanh, còn tất cả các lần còn lại đều dùng 512 byte, như vậy chưa tính việc đọc thẻ, giải thuật cũng đã nhanh hơn đáng kể vì ko cần copy qua lại giữa các buffer.