Проблемы с часами с FTDI C232HM-DDHSL-0C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с часами с FTDI C232HM-DDHSL-0

Сообщение Anonymous »

В настоящее время я программирую C232HM из FTDI на C# для передачи SPI в режиме 2, CPOL = 1
Но теперь у меня проблема: в начале передачи данных у меня происходит быстрое изменение 101 в часах, которых там быть не должно. Похоже, тактовый сигнал хочет измениться (как и должно быть в моем режиме SPI), но вынужден вернуться. Это происходит всегда после 8 бит.
Это мой код для конкретных данных:

Код: Выделить всё

using System;
using NationalInstruments.DAQmx;
using FTD2XX_NET;

class Program
{
static void Main(string[] args)
{
try
{
FTDI ftdiDevice = new FTDI();
FTDI.FT_STATUS ftStatus = FTDI.FT_STATUS.FT_OK;

ftStatus = ftdiDevice.OpenByIndex(0);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
Console.WriteLine("ERROR Opening");
return;
}   else
{
Console.WriteLine("opend");
}

// Set MPSSE-Mode for SPI
ftStatus = ftdiDevice.SetBitMode(0x00, FTDI.FT_BIT_MODES.FT_BIT_MODE_MPSSE);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
Console.WriteLine("ERROR set MPSSE");
ftdiDevice.Close();
return;
} else
{
Console.WriteLine("MPSSE set");
}

// Set baudrate
ftStatus = ftdiDevice.SetBaudRate(9600);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
Console.WriteLine("Failed to set baud rate");
return;
}

// Send MPSSE-commands to configure SPI-mode
byte[] initCommands = new byte[]
{
0x8A, // Disable divide by 5
0x97, // Turn off adaptive clocking
0x8D, // Disable 3-phase clocking
0x85, //deaktiviert loopback
0x86, 0x2C, 0x01, // Set clock divisor
};

uint bytesWritten = 0;
ftStatus = ftdiDevice.Write(initCommands, initCommands.Length, ref bytesWritten);
if (ftStatus != FTDI.FT_STATUS.FT_OK || bytesWritten != initCommands.Length)
{
Console.WriteLine("ERROR init.");
ftdiDevice.Close();
return;
}
else
{
Console.WriteLine("Init sent");
bytesWritten = 0;
}

while (true)
{
byte[] setGPIO = new byte[] // activate the Chip Select
{
0x80, 0b11101111, 0b11111011
};
ftStatus = ftdiDevice.Write(setGPIO, setGPIO.Length, ref bytesWritten);
if (ftStatus != FTDI.FT_STATUS.FT_OK || bytesWritten != setGPIO.Length)
{
Console.WriteLine("ERROR set GPIO");
return;
}

byte[] testData = new byte[]
{
0x11, 0x02, 0x00, 0xAA, 0xAA, 0xAA
};
ftStatus = ftdiDevice.Write(testData, testData.Length, ref bytesWritten);
if (ftStatus != FTDI.FT_STATUS.FT_OK || bytesWritten != testData.Length)
{
Console.WriteLine("ERROR write data");
return;
}

setGPIO[1] = 0b11111111; // deactivate the Chip Select
ftStatus = ftdiDevice.Write(setGPIO, setGPIO.Length, ref bytesWritten);
if (ftStatus != FTDI.FT_STATUS.FT_OK || bytesWritten != setGPIO.Length)
{
Console.WriteLine("Fehler beim GPIO setzen");
return;
}
Console.WriteLine("FERTIG");
string input = Console.ReadLine();
if (input == "end") { break;}
}
// Schließen Sie das Gerät
ftdiDevice.Close();

}
catch (DaqException ex)
{
Console.WriteLine("FTDI Error: " + ex.Message);
}

Console.WriteLine("ENDE");
}

}
101 изменение
передача размером более 1 байта
Измерения с помощью различных осциллографов и цифровых или аналоговых пробников не помогли.
Разные тестовые данные всегда приносили один и тот же результат
Снижение тактовой частоты не помогло
Я не уверен, является ли это программной проблемой в моем коде C# и управлении чипом или если это аппаратная проблема с моим адаптером

Подробнее здесь: https://stackoverflow.com/questions/790 ... hm-ddhsl-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Чтение EEPROM через SPI (C232HM)
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Чтение EEPROM через SPI (C232HM)
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Чтение EEPROM через SPI (C232HM)
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Можно ли узнать номер порта устройства FTDI, не открывая соединение?
    Гость » » в форуме C++
    0 Ответы
    28 Просмотры
    Последнее сообщение Гость
  • Работает ли кроссплатформенная библиотека System.IO.Ports.SerialPort на Android с чипами FTDI UART? (например, FT232R)?
    Anonymous » » в форуме Android
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»