Перейти к содержанию
    

Flir Lepton v2 - проблемы с получением кадра

Уважаемые специалисты, подскажите какие есть секреты у Lepton v2? Уже который день не получается добиться взаимности от указанного модуля.

 

Инициализация SPI

 

void spi_init()

{

SPI_InitTypeDef SPI_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

 

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);

 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5;

GPIO_Init(GPIOA, &GPIO_InitStructure);

 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

GPIO_Init(GPIOA, &GPIO_InitStructure);

 

 

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //полный дуплекс

SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; // передаем по 8 бит

SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // Полярность и

SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // фаза тактового сигнала

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; // Управлять состоянием сигнала NSS программно

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; // Предделитель SCK

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; // Первым отправляется старший бит

SPI_InitStructure.SPI_Mode = SPI_Mode_Master; // Режим - мастер

SPI_Init(SPI1, &SPI_InitStructure); //Настраиваем SPI1

SPI_Cmd(SPI1, ENABLE); // Включаем модуль SPI1

SPI_NSSInternalSoftwareConfig(SPI1, SPI_NSSInternalSoft_Set);

}

 

 

Функция чтения пакета имеет следующий вид:

 

void read_packet(uint8_t j)

{

uint16_t i;

GPIO_ResetBits(GPIOA,GPIO_Pin_4); //CS=0

 

for(i=0;i<164;i++)

{

SPI_I2S_SendData(SPI1, 0x00);

while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET); //ждем окончание передачи

leptonpkt[j]=SPI_I2S_ReceiveData(SPI1); //размещаем пакеты в буфер

}

 

GPIO_SetBits(GPIOA,GPIO_Pin_4); //CS=1

 

}

 

 

В мэйне происходит так:

 

uint8_t leptonpkt[60][164];

 

int main()

{

 

GPIO_SetBits(GPIOA,GPIO_Pin_4);

//задержка

GPIO_ResetBits(GPIOA,GPIO_Pin_4);

 

for(j=0;j<60;j++) //заполняем буфер строками

{

read_packet(j);

}

 

}

 

 

 

Проблема заключается в том, что лептон шлет всякую ерунду, при этом ни одного пакета с номером строки. Все настройки - по умолчанию: AGC off, telemetry disabled итд

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте аппаратную часть - правильность соединений (на процессоре и на девайсе).

У девайса 2 интерфейса, управляющий I2C и видео - SPI.

Проверьте их работоспособность без подключения к Flir

- SPI соедините MISO-MOSI

- I2C подключите к простому слейву 24LCxx для проверки.

Осцилографом желательно проверить форму-уровни сигналов, в частности тактирующие для обоих интерфейсов.

-- Если ЭТО выполнено ---

Читаем даташит на девайс, протокол обмена. Я начал бы с управляющего интерфейса. Если есть таковая - считать из девайса команду "версия firmware".

ps

Обратите внимение на частоты тактирования интерфейсов. Для I2C - не более 400 кГц, для SPI - не более указанного в даташите на Flir

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

I2C читается-пишется, по SPI приходят пакеты по виду похожие на дискарды, частота клока около 6МГц

 

А без чтения версии firmware он не начнет выдавать данные по SPI?

Обязательно ли подключение MOSI?

 

Если что, тепловизор смонтирован в плату Lepton Breakout Board v 1.4

 

 

Изменено пользователем Bakradze

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . . Обязательно ли подключение MOSI?
судя по док-ии - не обязательно.

Проверьте настройки SPI процессора (полярность, фаза) на соотв-ие требованиям даташита. Неактивное состояние SCK == 1, защелка данных по Raise-фронту.

Если эти настройки не верные, то процессор будет принимать непонятночто. Это "типовая" ошибка в настройках интерфейса SPI.

Проверяйте правильность данных по CRC.

ps - в даташите, то о чем указано выше

The Lepton uses SPI Mode 3 (CPOL=1, CPHA=1). SCK is high when idle. Data is set up
by the Lepton on the falling edge of SCK, and should be sampled by the host controller on
the rising edge of SCK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перепробованы всевозможные настройки SPI...Сейчас в MODE3 но что-то особой разницы нету :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перепробованы всевозможные настройки SPI...Сейчас в MODE3 но что-то особой разницы нету :(
Тут дело не в "разнице" а в проверке CRC полученного фрейма.

И перебирать настройки, я думаю, не перспективно. Следует установить те, на которых

вам отвечает слейв. Это элементарно проверяется осциллографом,

1. Синхронизируете осцилограф по входу вненей син-ии от спада ~CS

2. Канал 1 - SCK

3. Канал 2 - MISO (то, что выдает слейв - Flir)

Проверяете:

До появления "спада" ~CS уровень SCK должен быть 1

После спада CS SCK должно "уйти" в 0.

Причем:

уровень на линии MISO в момент Raise-SCK изменяться не должен

уровень на линии MISO может изменяться в момент Fail-SCK

 

Если предположить, что в этой части все работает так как надо - проверяем уже софт, чтение из SPI.

 

ps

Скорость "вычитки" должна соответствовать частоте "кадров", чтобы небыло переполнения буфера девайса, кадра или строки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...