Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • STM32. SPI интерфейс

    SPI Самый популярный интерфейс передачи данных, может работать в режиме протокола SPI или аудио протокола I2S. Большинство датчиков, различных сенсоров и дисплеев общаются с микроконтроллером через этот интерфейс. Он несколько сложнее интерфейса USART , но обеспечивает более надежную передачу данных.
    Первое чем отличается от интерфейса USART, это назначение "Ведущей" (или Master) микросхемы, которая задает тактирование и управляет приемом/передачей информации между двумя и больше микросхемами. Сколько бы ни было микросхем на связи SPI, обязательно должен быть только один Master (в один момент времени).
    SPI работает в режиме приема/передачи формата 8 и 16 бит полудуплекс или полный дуплекс, использует 4 вывода:

    MOSI - Master Output Slave Input, если микросхема является Ведущей, этот вывод должен быть подключен к входу Подчиненной микросхемы.
    MISO - Master Input Slave Output, если микросхема является Ведущей, этот вывод принимает сигнал от Подчиненной микросхемы ( Ведомого )
    SCK - вывод тактирования.
    NSS - вывод управления (вкл/выкл) Подчиненных (Slave) микросхем, если ножка не настроена на автоматическое переключение, в начале связи ее уровень нужно устанавливать в ноль или наоборот в единицу, в зависимости от настроек бита.
    Бит CPOL и CPHA отвечает за отношение фазы сигнала к тактированию, от него зависит при каком логическом переходе (с 0 в 1 , или наоборот) начнется отчет начала связи. Вариантов есть четыре, кроме отслеживания по переходу есть возможность настройки по переднему и задних фронтах. Эти установки должны быть одинаковы на всех устройствах участвующих в передаче. На качество связи данные биты могут повлиять если графики сигнала тактовых импульсов на фронтах не одинаковы на разных устройствах, и можно выбрать ту модель синхронизации, максимально подходящей для данных устройств.

    Сложность работы SPI является еще и в том, что он не может передавать данные " в никуда ", или принимать данные из " неоткуда " как USART. Передача данных SPI начинается с передачи адреса регистра , куда эти данные следует записать или прочитать, и только потом уже отправлять значения в регистры. Поэтому нужно знать адресное пространство других устройств, чтоб с ними работать. Если микросхем много, то прежде всего нужно еще и указывать адрес устройства с которым будет сеанс связи.
    Вся работа према-передачи происходит через регистр смещения, с одной стороны из него данные выходят, с другой стороны одновременно, побитово, в него данные загружаются. Главное не перепутать какие данные нужны, а какие просто мусор - загрузились одновременно при отправке данных.

    //............SPI.......
    #define RCC_SPI1 *((uint32_t*)0x40023844)//RCC
    #define SPI1_CR1 *((uint32_t*)0x40013000)
    #define SPI1_CR2 *((uint32_t*)0x40013004)
    #define SPI1_SR *((uint32_t*)0x40013008)
    #define SPI1_DR *((uint32_t*)0x4001300C)
    #define SPI1_CRCPR *((uint32_t*)0x40013010)
    #define SPI1_RXCRCR *((uint32_t*)0x40013014)
    #define SPI1_TXCRCR *((uint32_t*)0x40013018)
    #define SPI1_CTRL_REG1 *((uint32_t*)0x40013020)



    Читайте больше в категории: Программирование встраиваемых систем

    2016-04-07 15:18:21



    Другие статьи:

    Java. Графики функций - продолжение

    JavaScript. Создание, поиск и удаление элементов

    Maya. Освещение

    Maya. Insert Edge Loop Tool и Lattice

    2D. Рисование реалистичной воды

    PHP. Введение

    Maya. Нормали и Системы координат

    Инженерия

    WinAPI. Кнопки Управления Графиком функций.

    WinAPI. Введение.