Jump to content

    

BSACPLD

Свой
  • Content Count

    582
  • Joined

  • Last visited

Community Reputation

0 Обычный

2 Followers

About BSACPLD

  • Rank
    Знающий
  • Birthday 06/16/1986

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

5016 profile views
  1. Эта штука сейчас чисто поиграться/отладить прошивку в ПЛИС. Потом все равно будет другая матрица. Так что действительно нет смысла подписывать.
  2. Datasheet и AppNote есть, но там "пишите нам, мы вам не ответим" (Contact OmniVision local FAE). Что касается исходников для Linux и Arduino, там есть только варианты настройки под RGB, YUV и JPEG. Я тоже :(
  3. Коллеги, кто-нибудь пытался запустить OV2640 в RAW (Bayer) режиме? К сожалению, ни в datasheet, ни в application note эта процедура никак не описана, не говоря уже о большей части регистров без инициализации которых эта штура даже клок не выдает :(
  4. Скачал тестовый проект с сайта INTEL - те же симптомы. ltssmstate[4:0] = 5'h02 (00010: Polling.Active) currentspeed[1:0] = 2'h1 (2b’01: Gen1) lane_act[3:0] = 4'h0
  5. Посмотрел схему. Клок для PCIe идёт прямо с разъёма :(
  6. Грузится пока без драйвера. Проверяю наличие через lspci. Материнка MSI Z270. Процессор 7700K. Слаков нет. Кроме того я использую Hard IP. Прошивка грузится из FLASH через FPP. Насчёт своих 100МГц надо посмотреть, можно ли их подцепить к Hard IP на данной плате...
  7. Есть 3 компьютера. На одном плата стабильно определяется, но при установленной плате компьютер очень долго загружается. На двух других компьютерах плата определяется только после перезагрузки (с первого включения не определяется) и только если она установлена в слот x16 предназначенный для видеокарты. Во всех других слотах плата вообще не определяется. Подскажите, пожалуйста, в чем может быть проблема.
  8. 1) А это разве не ожидание? while ((I2C1->SR1 & I2C_SR1_SB) == 0) ; 2) А это не проверка флага ADDR? while (true) { uint16_t SR1 = I2C1->SR1 ; if (SR1 & I2C_SR1_AF) { I2C1->SR1 &= ~I2C_SR1_AF ; stop_I2C () ; return false ; } if (SR1 & I2C_SR1_ADDR) { (void) I2C1->SR2 ; break ; } 3) Либо через флаг BTF. if (SR1 & I2C_SR1_BTF) { break ; } 4) А разве я делаю по другому? while ((I2C1->SR1 & I2C_SR1_RXNE) == 0) ; return I2C1->DR ; Вообще я уже нашел как обойти глюк с лишним байтом. Запись флага STOP в CR1 нужно делать ДО окончания приема последнего байта, а не после.
  9. Коллеги, помогите, пожалуйста, понять в чем проблема. Читаю данные из EEPROM 24XX64. При чтении последнего байта выдаю NACK. После этого STOP. Все читается как надо, только меня смущает наличие лишней транзакции чтения после чтения последнего байта (тоже с NACK). Вот код и скриншот из лог. анализатора. Работа с I2C: // control_i2c.c #include <stm32f10x.h> #include <stm32f10x_i2c.h> #include <stdint.h> #include <stdbool.h> #include "main.h" #include "system.h" #include "control_i2c.h" //--------------------------------------------------------------------------- void I2C_INIT (void) { // Настройка I2C I2C1->CR2 = (CPU_CLOCK_HZ / 2) / 1000000 ; I2C1->CCR = I2C_CCR_FS | I2C_CCR_DUTY | 4 ; I2C1->TRISE = 12 ; // Включение I2C I2C1->CR1 = I2C_CR1_PE ; } //--------------------------------------------------------------------------- void start_I2C (void) { I2C1->CR1 |= I2C_CR1_START ; while ((I2C1->SR1 & I2C_SR1_SB) == 0) ; } //--------------------------------------------------------------------------- void stop_I2C (void) { I2C1->CR1 |= I2C_CR1_STOP ; while ((I2C1->SR2 & I2C_SR2_BUSY) == 0) ; } //--------------------------------------------------------------------------- bool write_byte_I2C (uint8_t data) { I2C1->DR = data ; while (true) { uint16_t SR1 = I2C1->SR1 ; if (SR1 & I2C_SR1_AF) { I2C1->SR1 &= ~I2C_SR1_AF ; stop_I2C () ; return false ; } if (SR1 & I2C_SR1_ADDR) { (void) I2C1->SR2 ; break ; } if (SR1 & I2C_SR1_BTF) { break ; } } return true ; } //--------------------------------------------------------------------------- uint8_t read_byte_I2C (bool ack) { if (ack) I2C1->CR1 |= I2C_CR1_ACK ; else I2C1->CR1 &= ~I2C_CR1_ACK ; while ((I2C1->SR1 & I2C_SR1_RXNE) == 0) ; return I2C1->DR ; } //--------------------------------------------------------------------------- Работа с EEPROM: bool ReadFlashMM (uint8_t n_mm, uint16_t address, uint8_t* data, uint16_t size) { uint8_t chip_a = MM_FLASH_I2C_ADDR + (n_mm << 1) ; // S start_I2C () ; // AD+W if (!write_byte_I2C(chip_a)) return false ; // MA H if (!write_byte_I2C(HIBYTE(address))) return false ; // MA L if (!write_byte_I2C(LOBYTE(address))) return false ; // S start_I2C () ; // AD+R if (!write_byte_I2C(chip_a | 0x01)) return false ; for (uint16_t i=0 ; i<size ; i++) { // DATA if (i == (size-1)) data[i] = read_byte_I2C (false) ; else data[i] = read_byte_I2C (true) ; } // P stop_I2C () ; return true ; } Скриншот из лог. анализатора:
  10. Сколько стоит STM32 и сколько FPGA? https://efind.ru/offer/STM32F103 https://efind.ru/offer/10M25 Разница в десять раз! Любой коммерческий проект требует минимальной себестоимости изделия.
  11. >> Это Вам нужно уточнить у StewartLittle У меня есть цены только за 1 шт. Лучше запросите у него - не знаю, можно ли в открытую публиковать здесь цены...

    Написал в личку.

  12. Это Вам нужно уточнить у StewartLittle У меня есть цены только за 1 шт. Лучше запросите у него - не знаю, можно ли в открытую публиковать здесь цены...
  13. SAE - есть возможность инициализации RAM из flash. SCE - нет возможности инициализации RAM, соответственно модуль перекачивающий данные из flash в RAM придется писать самостоятельно, что тоже съест часть ресурсов. А сами чипы в 4-5 раз дешевле аналогичных от Intel. Ничто не мешает сделать плату самостоятельно, а не покупать готовую :) Я как раз заказываю себе несколько штук GW2AR-18 чтобы попробовать перевести на них один из своих проектов. На отладочной плате наигрался, теперь буду пробовать делать свои платы. Так сказать от теории перехожу к практике. У Intel и Xilinx регистрация также обязательна когда дело доходит до скачивания среды разработки. GW2A18, GW1NR9.
  14. Да не особо. Есть конечно ряд нюансов связанных с кривизной отладчика и недопиленностью среды разработки, но, как говорится, жить можно. Вот вариант моего AVR для GOWIN под отладочную плату DK-START-GW2A18. https://yadi.sk/d/hzP1aN1GN5kkpQ В проекте реализован простейший пример с Ethernet и прерыванием от кнопки. Возможность патчить битстрим GOWIN пока так и не реализовали, поэтому я сделал загрузку через UART (см. папку tools), чтобы не пересобирать проект каждый раз после смены прошивки CPU.
  15. Где купили если не секрет? Я сами отладки покупал, а вот чипов в продаже нигде не видел :(