Jump to content

    

RadiatoR

Свой
  • Content Count

    290
  • Joined

  • Last visited

Community Reputation

0 Обычный

About RadiatoR

  • Rank
    Местный
  • Birthday 05/17/1991

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва

Recent Profile Visitors

1968 profile views
  1. STM32.Как перейти с STM32F042xx на stm32F407?

    Например блок I2C сильно отличается. А что мешает взять код проекта, перенести на другие библиотеки, скомпилить и посмотреть что работает? Ну а далее допилить. Если работа идет на регистрах, то придется поработать ручками. Покурить ДШ. Ну а если HAL/spl, то будет попроще. PS. Кстати не забудьте почитать errata на планируемый чип. Сэкономите время при поиске косяков.
  2. Stratix 1 - это имеется ввиду Startix 10? (я просто в танке...)
  3. Усе работает =) Всем спасибо за помощь
  4. ! Вы гений! Отладка появилась у меня очень давно. И давным давно я зачем-то на нижней стороне резанул одну дорожку. Резанул очень аккуратно и не заметно. И забыл. Это оказался Reset =)
  5. Парой сообщений выше выложил осциллограмму
  6. I2C инициализирован верно I2Ct::I2Ct() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->OTYPER |= OTYPERset(SCL_PIN) | OTYPERset(SDA_PIN);// Open drain type GPIOB->MODER |= MODERset(SCL_PIN, ModeAf) | MODERset(SDA_PIN, ModeAf); AFreg(GPIOB) |= AFset(SCL_PIN, 4) | AFset(SDA_PIN, 4); RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; I2C1->CR1 = I2C_CR1_SWRST;// software reset I2C1->CR1 = 0; I2C1->CR2 = 24;// frequency in MHz for some internal requiments and interrupts //I2C1->CCR = 240;// i2c 100kHz prescaler for 24Mhz APB I2C1->CCR = 0xFFF;// i2c 5.6kHz prescaler for 24Mhz APB I2C1->TRISE = 25;// maximum rise time I2C1->CR1 = I2C_CR1_PE;// enable i2c }
  7. PS. При включенном постоянном MCLK (если I2S3 перевести в режим master receive, то clock будет постоянно работать без необходимости записи в DR) все равно чип не опрашивается по I2C
  8. Так программы то и нет как таковой. Инициализировал микрофон, он работает как надо. Тактирование идет, данные идут, все ок. Далее пытаюсь инитить DAC: bool I2Ct::setReg(byte addr, byte reg) { while((I2C1->SR2 & I2C_SR2_BUSY) > 0); I2C1->CR1 &= ~I2C_CR1_STOP;// clear STOP bit I2C1->SR1 &= ~I2C_SR1_AF; I2C1->CR1 |= I2C_CR1_START;// start bit generations while(!(I2C1->SR1 & I2C_SR1_SB)); I2C1->DR = addr << 1;// address + w ushort status; do status = I2C1->SR1; while(!(status & (I2C_SR1_ADDR | I2C_SR1_AF))); bool valid = (status & I2C_SR1_AF) ? false : true; if(valid) { (void) I2C1->SR1; (void) I2C1->SR2; while(!(I2C1->SR1 & I2C_SR1_TXE)); I2C1->DR = reg; while(!(I2C1->SR1 & I2C_SR1_BTF)); } I2C1->CR1 |= I2C_CR1_STOP; return valid; } CS43L22::CS43L22() : I2C { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; GPIOD->MODER |= MODERset(4, ModeOut); incr = 0x80; GPIOsetPin(GPIOD, 4);//Reset pin } CS43L22 audioModule; int main() { I2S2init(); I2S3init(); delay(100000); audioModule.setReg(id, 0x80); while(1); } И вижу следующую осциллограмму: Ножка Reset на 3,3в (бирюзовый уровень внизу графика) Вот такие дела.
  9. PS. Думаю MCLK действительно не нужен для работы I2C, т.к. на отладке он подключен к I2S_MCLK, а он в свою очередь работает только при передаче данных из DR. То есть после записи в DR. В момент инициализации мы, естественно, ничего не передаем. Собственно ДШ это и описывает. Выходит проблема не в тактировании MCLK.
  10. Нет, как раз наоборот. Чтобы не выгребать чужие грабли все интерфейсы поднимаю сам по пути разбираясь как они работают. Мне так удобно.
  11. Ставка зашла на 100%! =) Разве MCLK нужен для работы I2C? Я его не стартовал. Думал по I2C достучусь и дальше продолжу инициализацию... Частота I2C ~5.6kHz, SCL, SDA не перепутаны, т.к. это отладка, то AD0 висит на земле. I2C должен работать до подключения MCLK (кстати, в примере от ST тоже сначала идет общение по I2C). Из ДШ: Адрес 10010100 - write, 10010101 - read. Тот, что пишется в DR. Ну тут все стандартно. Про 0x97 что-то с головы взялось пока писал, обшибся в сообщении (в коде все норм). На счет библиотек - никогда не любил ничего кроме работы с регистрами. Есть свои либы, которые написаны, отлажены и работают. Сейчас попробую подрубить MCLK
  12. Почему именно тион? Плата уже куплена? Какие задачи в перспективе планируются?
  13. PS. Увы =(, что и следовало ожидать - инициализация DAC в примере такая же как и у меня и ответ на адрес тоже NACK. Видимо чип устал...
  14. Всем доброго дня!. Собственно сабж. Имею данную отладочную плату, на ней установлен этот DAC. Никак не могу установить с ним соединение по I2C. Отправляю ему адрес 0x4A (он же 0x94 на запись или 0x97 на чтение) - в ответ NACK. Смотрю осциллограмму - все хорошо. Reset снимаю, передачу начинаю через пару мс (в ДШ не ранее 500нс). Пытаюсь элементарно прочитать ID чипа, но увы, даже на I2C адрес не дает ACK. Перебрал все адреса ((0 - 127) << 1) - все равно не дает ACK. Стандартный пример с записью звука на флешку и проигрыш с нее что-то не запахал (где-то usb отваливается, а инициализация DAC идет после стабильного старта usb), но к нему у меня особо интереса нет. Сейчас его откоррекчу и стартану инициализацию до usb, но, чувствую, вряд ли заведется... Может есть что-то чего я в ДШ не заметил? Или может чип ушел на покой? Есть какие-нибудь мысли? Спс.
  15. Добрый день. Можно ли правилами отсечь TH pad, не входящий в какой-либо компонент (просто свободный multilayer pad на плате). Если да, то как сформировать правило. Спасибо.