Allregia
Mar 15 2012, 16:25
В одном устройстве предполагается исползовать STM32F405 и его порт I2S в фулдуплексе.
Но к содалению я или слепой, или в референс-мануале о нем почни ничего.
Т.е. расписано что такое "есть", но я не нашел ни одноо упоминания о фулдуплексе и вообще о ножках I2Sx_extSD в описании регистров.
Как этот фулдуплекс сконфигурировать? Может есть какие-то дополнительный мануалы? Буду рад если кто ткнет на них линком (хотя я вроде на сайте ST уже все пересмотрел).
Может просто достаточно настроить в альтенкативных функциях ножек сами эти extSD, и все ?
на сайте stm, есть STM32F4xx_DSP_StdPeriph_Lib_V1.0.0 (
http://www.st.com/internet/com/SOFTWARE_RE...dperiph_lib.zip ), там примеры и библиотека под всю периферию. Есть там файл библиотеки stm32f4xx_spi.c, в котором сказано
Код
To configure I2S full duplex you have to:
*
* 1. Configure SPIx in I2S mode (I2S_Init() function) as described above.
*
* 2. Call the I2S_FullDuplexConfig() function using the same strucutre passed to
* I2S_Init() function.
*
* 3. Call I2S_Cmd() for SPIx then for its extended block.
*
* 4. To configure interrupts or DMA requests and to get/clear flag status,
* use I2Sxext instance for the extension block.
а в примере (I2S/I2S_TwoBoards/DataExchangePolling/main.c) сделанном под эту библиотеку - есть код для Master full Duplex configuration
Allregia
Mar 18 2012, 15:14
Спасибо, вроде стало понятно. НУ что им стоилио в даташите/реф.мане чуть поподробнее написать?!
А еще небольшой вопрос - в отличие от F1, где если периферию включил, там она пин и заняла, в F4 на каждй пин стоит мультиплексор 16х1 )оставим на их совести, что большую часть входов они не использовали, самки собаки).
Ь.е. если мне к примеру нуждна какая-то перефирия. но не вся, я могу просто не включать мультиплексор на этот пин и использовать его как I/O или с другой периферией?
Проще наверное на примере:
RB4 - SPI1_MISO, SPI3_MISO
RB5 - SPI1_MOSI, SPI3_MOSI
RA7 - SPI1_MOSI,
Мне нужны одновременно оба SPI, но один 2-х сторонний, и один только на передачу.
Я включаю SPI1, SPI2, и конфигурирую пины так:
RB4 - SPI3_MISO
RB3 - SPI3_MOSI
RA7 - SPI_MISO,
Т.е. RB4 и RB5, которые при включении SPI1 должны были бы быть его, бьудут относится не к нему а к SPI3.
Или мне нужен UART только на прием, его ножку TxD можно ведь и как I/O или еще как использовать? В F1 был бы нельзя.
Я прав?
И еще раз по поводу I2S - в одном устройстве нужен фулдуплекс, а вот в другом интереснее - там нужен только мастер-прием, но проблема в том, что I2S3_SD это занят SPI1_MOSI, a RC12 занят другим. Но свободен PB14, который I2S3ext_SD.
Сработает ли такой трюк - настраиваем I2S3 в фулдуплексе на мастер-передачу, I2S3ext при этом получается приемник.
И - не отдаем ему ногу с I2S3_SD а используем ее с другой переферией.
Т.е. из фулдуплекса я использую только мастер-прием, причем по линии extSD, одним словом - обмануть I2S подсунув ему extSD вместо SD, проигнорировав фулдуплекс.
Будет работать, как Вы думаете?
P.S. Я в командировке, так что попробовать сейчас-же на реальном железе не могу.