реклама на сайте
подробности

 
 
> микрофон в STM32F4-DISCOVERY не должен работать, а работает, помогите понять работу MOSI-MISO
victorovich2004
сообщение Apr 8 2016, 10:22
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 8-04-16
Пользователь №: 91 203



Добрый день.
Обнаружил странную особенность в discovery касательно микрофона, особенность подтвердилась и при разработке собственной платы с микрофоном на базе STM32F4
Суть в том, что вывод DATA микрофона подключен к MOSI-пину контроллера, а не MISO! И в тестовом примере, идет инициализация этого пина как MOSI при типе инициализации MasterRX (т.е. контроллер принимает). А какой же здесь MOSI, когда должен быть MISO! Т.е. Master принимает, а Slave отдает данные. Но не наоборот! Почему тогда это работает?
Когда сделали свою плату и начали инициализировать нужный для MISO-пин, то ничего не работало - контроллер не принимал данные. Переключились на MOSI - все пошло.
Просьба объяснить, что за бред? По-другому не назовешь.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
victorovich2004
сообщение Apr 8 2016, 13:43
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 8-04-16
Пользователь №: 91 203



Определения из википедии я читал, спасибо.
Master - это контроллер и инициализируется в режиме MasterRx (т.е. контроллер получает),
следовательно в таком режиме микрофон должен отдавать данные как Slave в пин Master Input Slave Output (т.е. Slave-микрофон данные отдает).
А по факту микрофон подключен на пин для которого допустима инициализация только в режиме MOSI и в примерах константы описаны как MOSI. С MISO контроллер данные не принимает. Почему?

Вот части кода из стандартного примера waverecorder.c:
Код
  I2S_InitStructure.I2S_AudioFreq = Freq*2;//i2s two channel mode
  I2S_InitStructure.I2S_Standard = I2S_Standard_LSB;
  I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
  I2S_InitStructure.I2S_CPOL = I2S_CPOL_High;
  I2S_InitStructure.I2S_Mode = [b]I2S_Mode_MasterRx[/b];
  I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Disable;

#define SPI_[b]MOSI[/b]_PIN                      GPIO_Pin_3
#define SPI_[b]MOSI[/b]_GPIO_PORT                GPIOC
#define SPI_[b]MOSI[/b]_GPIO_CLK                 RCC_AHB1Periph_GPIOC
#define SPI_[b]MOSI[/b]_SOURCE                   GPIO_PinSource3
#define SPI_[b]MOSI[/b]_AF                       GPIO_AF_SPI2

Исходя из документации пин PC3 может быть инициализирован только как MOSI.

Вот и мой вопрос - почему в режиме MasterRx данные приходят через MOSI ???

Сообщение отредактировал IgorKossak - Apr 8 2016, 17:45
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 12:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016