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

 
 
 
Reply to this topicStart new topic
> микрофон в 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
Tarbal
сообщение Apr 8 2016, 12:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



MOSI Master Output Slave Input
MISO Master Input Slave Output
Как видно из названия, ножки меняют свое направление в зависимости от роли устройства.
Мастер тот кто дает синхроимпульсы. Когда вы определите кто в шине мастер, то все встанет на свои места.

Сообщение отредактировал IgorKossak - Apr 8 2016, 17:45
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
victorovich2004
сообщение Apr 8 2016, 13:43
Сообщение #3





Группа: Новичок
Сообщений: 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
Tarbal
сообщение Apr 11 2016, 00:02
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



У вас две шины I2S и SPI. Мастер в I2S фиолетово для SPI. В каждой из шин мастер и слейв выбираются независимо.
Go to the top of the page
 
+Quote Post
victorovich2004
сообщение Apr 11 2016, 10:27
Сообщение #5





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



Вы могли бы конкретно ответить на мой вопрос - почему с микрофона discovery данные поступают в MOSI-пин, а не MISO? По такой логике мастером должен быть микрофон, но тогда режим инициализации был бы MasterTx, а не MasterRx как в стандартном примере.

Сообщение отредактировал victorovich2004 - Apr 11 2016, 10:27
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Apr 11 2016, 11:48
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(victorovich2004 @ Apr 11 2016, 14:27) *
Вы могли бы конкретно ответить на мой вопрос - почему с микрофона discovery данные поступают в MOSI-пин, а не MISO? По такой логике мастером должен быть микрофон, но тогда режим инициализации был бы MasterTx, а не MasterRx как в стандартном примере.


Так ответил же очень даже конкретно. Ну если вам разжевать до деталей, то пожалуйста:
По SPI микрофон является мастером. Судя по всему по i2s микрофон slave. Вы отчего-то полагаете, что раз по i2s микрофон slave, то и по SPI он тоже должен быть slave. Ваше предположение ошибочно.
Go to the top of the page
 
+Quote Post
victorovich2004
сообщение Apr 11 2016, 15:07
Сообщение #7





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



Спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:26
Рейтинг@Mail.ru


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