Дошли наконец руки поисследовать Synchro Bit Bang
Исследовал на FT245RL.
Для начала с помощью простейшей программки
Код
#include <windows.h>
#include <stdlib.h>
#include <assert.h>
#include "ftd2xx.h"
#define SCK_PIN 5
#define OUT_PIN 6
FT_HANDLE hFtdi;
unsigned buf[4];
int main(int argc, char* argv[])
{
unsigned tmp;
unsigned baud;
DWORD num;
assert(FT_Open(0,&hFtdi)==FT_OK);
assert(FT_SetLatencyTimer(hFtdi,2)==FT_OK);
assert(FT_SetBitMode(hFtdi,(1<<OUT_PIN) | (1<<SCK_PIN),4)==FT_OK);
assert(argc>1);
baud = atoi(argv[1]);
assert(baud);
assert(FT_SetBaudRate(hFtdi,baud)==FT_OK);
FT_Purge(hFtdi,FT_PURGE_RX | FT_PURGE_TX);
tmp = (1<<OUT_PIN) | (1<<SCK_PIN);
assert(FT_Write(hFtdi,&tmp,1,&num)==FT_OK);
Sleep(10);
FT_Purge(hFtdi,FT_PURGE_RX | FT_PURGE_TX);
Sleep(10);
while(1) {
tmp = (((1<<OUT_PIN) | (1<<SCK_PIN))<<8) | (((1<<OUT_PIN) | (1<<SCK_PIN))<<24);
buf[0] = tmp;
buf[1] = tmp;
buf[2] = tmp;
buf[3] = tmp;
assert(FT_Write(hFtdi,buf,16,&num)==FT_OK);
assert(FT_Read(hFtdi,buf,16,&num)==FT_OK);
Sleep(2000);
}
return 0;
}
Результаты как и следовало ожидать очень интересные.
Как я уже выяснил давно ( еще и на старых FTDI с обычным bitbang ) баудрейт задает максимальную скорость выдачи семплов иногда возникают существенные задержки в произвольном месте(и это не связно с передачей по USB данные уходят в одном пакете). Что сделало невозможным использование тогда для С2 интерфейса (там клоки на ресет идут). Но тогда я не пробовал ставить бауд рейт выше 1E6/16 = 62500. А сейчас попробовал и вот что получилось:
Для баудрейта 62500 частота выдачи должна быть 1 mhz, так и получается, но произвольные задержки в разных местах иногда возникают.
Ставлю бауд рейт 187500 (187500*16 = 3 Mhz = 0.33 mks) на оцилографе вижу минимум ~ 0.66
Вообще судя по всему получается для бауд рейтов выше 62500 ( 1 mhz) частота выдачи получается странная и по осцилографу не получается выше 0.5 с маленьким хвостиком mks т.е. практически 2 mhz. Но произвольные паузы присутсвуют
Но самое интересное получается если баудрейт установить 3 000 000.
Получается идеальная картинка с частотой практически 1 Mhz ( т.е. частота выдачи 2 mhz) и никаких пауз.Для баудрейта 1 000 000 тоже пауз не заметил частота практически та же что и для 3 000 000, но клоки немного не симмитричные в разных посылках по разному.