Trích:
Nguyên văn bởi eldest_daica
thân ,
Mục đích của mình là truyền thông số về dòng điện lên máy tính ,sau đó đk động cơ .
Do đk vòng lặp dòng điện nên mình nó đáp ứng nhanh trong khoảng 0.1 ms .
Vì thời gian trao đổi là của frames là 1ms .Mình quan tâm đến vấn đề là trong một frames ấy mình cấn thực hiện được khoảng 10 transaction với các endpoint in và 10 transaction với các endpoint out .
Mục đích của mình không phải gửi một lần với số lượng dữ liệu lớn mà là thực hiện được cành nhiều trao đổi dữ liệu nhưng với kích thước nhỏ trong 1frames để đảm bảo đk dòng điện .
Mình ban đầu của mình là đk một động cơ ,sau thì đk nhiều hơn ,nên mình rất quan tâm đến vấn đề này !
Khi xem usb complete ,chỉ với kiểu truyền control mới cho phép cả endpoint in và endpoint out được sử dụng trong một frames thôi thì phải ?
Theo lý thuyết thì bạn có thể hoàn tất nhiều transaction trên nhiều EP trong cùng 1 frame hoặc micro frame.
Điều này bạn nói có thể thực sự chính xác không ,vì mình thấy trong endpoint description chỉ cho phét định nghĩa tối đa 3 transaction /frames :bit 11 và 12 .
Mình định sử dụng nhiều endpont khác nhau thực hiện việc trao đổi dữ liệu với khối lượng nhỏ để có thế thực hiện được nhiều transaction /frames ,không biết có được không .
|
Vấn đề là cho dù bạn có thực hiện được 10 transaction trong 1 ms, thì các transaction đó cũng không diễn ra tuần tự một cách chính xác sau mỗi 0,1 ms.
Cần hiểu thế này: mỗi 1 ms, host sẽ hỏi các ngoại vi nối vào bus xem có cần truyền dữ liệu không, nếu cần sẽ thực hiện truyền (bao nhiêu transaction trong mỗi lần truyền thì tùy theo thiết lập mà host đã ấn định sau khi hoàn tất negotiation). Nếu host không hỏi thì ngoại vi có hàng ngàn byte dữ liệu cũng sẽ phải để nằm chờ ở đó.
Nếu chỉ truyền dữ liệu lên máy cho mục đích lưu trữ, hiển thị, thì bạn chỉ cần lưu ở bộ đệm của PIC, rồi mỗi lần được phép truyền thì đẩy toàn bộ dữ liệu đang đệm lên PC.
Điều mà bạn muốn là tần suất cập nhật thông tin cao, và nếu tần suất này là > 8000 lần mỗi giây thì ngay cả hi-speed USB cũng bó tay (USB không được thiết kế cho mục đích này). Ví dụ, bạn muốn thay đổi trạng thái của một ngõ ra trên ngoại vi một cách bất đồng bộ trong vòng 100 us thì hi-speed USB cũng chịu chết.
Và tiêu đề của luồng này cũng không phản ánh chính xác điều mà bạn muốn đạt được, bạn muốn có update rate cao, chứ không quan tâm lắm đến data rate.
Thân,