F60-67 (1041605), страница 47
Текст из файла (страница 47)
NSSне используется и не разводится на внешний вывод порта с помощью матрицы. Т.к. в этом режиме нет способаоднозначной адресации устройства, то SPI0 должен быть единственным ведомым устройством,присутствующим на шине. Важно иметь ввиду, что в 3-х проводном ведомом режиме отсутствуют средства длясброса битового счетчика, который определяет момент окончания приема байта. Этот битовый счетчик можносбросить лишь путем выключения и повторного включения модуля SPI0 с помощью бита SPIEN.
На рис.21.3приведена схема соединений между ведущим и ведомым устройствами в 3-х проводном режиме.21.4. Источники прерываний модуля SPI0Если прерывания от модуля SPI0 разрешены, то следующие 4 флага будут генерировать прерыванияпри установке их в 1:Все приведенные ниже флаги сбрасываются программно.1.2.3.4.255Флаг прерывания от модуля SPI0 SPIF (SPI0CN.7) устанавливается в 1 по окончании передачикаждого байта. Установка этого флага возможна во всех режимах работы модуля SPI0.Флаг конфликта записи WCOL (SPI0CN.6) устанавливается в 1, если запись в регистр SPI0DATпроисходит в тот момент, когда данные из буфера передатчика еще не переписаны в сдвиговыйрегистр.
В этот случае запись в регистр SPI0DAT игнорируется и буфер передатчика непереписывается. Установка этого флага возможна во всех режимах работы модуля SPI0.Флаг ошибки режима MODF (SPI0CN.5) устанавливается в 1, если модуль SPI0 функционирует какведущий в режиме работы с несколькими ведущими и на входе NSS появляется сигнал с низкимлогическим уровнем.
В этом случае будут сброшены в 0 биты MSTEN и SPIEN в регистре SPI0CN,в результате чего модуль SPI0 будет отключен. Это позволит другому ведущему устройствуполучить доступ к шине.Флаг переполнения приемника RXOVRN (SPI0CN.4) устанавливается в 1, если при работе врежиме ведомого передача завершается, а буфер приемника все еще содержит непрочитанный байтот предыдущей передачи. Новый байт не переписывается в буфер приемника, что позволяетпрочитать ранее принятый байт данных. Байт данных, который вызвал переполнение приемника,теряется.Ред.
1.2C8051F060/1/2/3/4/5/6/721.5. ТактированиеИспользуя биты управления тактовой частотой регистра конфигурации модуля SPI (SPI0CFG), можновыбрать четыре комбинации фазы и полярности импульсов тактирования последовательного интерфейса. БитCKPHA (SPI0CFG.5) выбирает одну из двух фаз тактового сигнала (фронт, используемый для фиксацииданных). Бит CKPOL (SPI0CFG.4) задает активный уровень (высокий или низкий) тактового сигнала.
Какведущий, так и ведомые устройства должны быть настроены на использование одинаковых фазы и полярноститактовых импульсов. При изменении фазы и полярности тактовых импульсов модуль SPI0 следует отключитьсбросом в 0 бита SPIEN (SPI0CN.0). Временные диаграммы сигналов данных и тактирования для ведущегорежима приведены на рис.21.5. Временные диаграммы сигналов данных и тактирования для ведомого режимаприведены на рис 21.6 и рис.21.7. Следует иметь ввиду, что бит CKPHA должен быть сброшен в 0 как уведущего так и у ведомого SPI при обмене данными между любыми двумя из следующих МК: C8051F04x,C8051F06x, C8051F12x, C8051F31x, C8051F32x и C8051F33x.Регистр установки тактовой частоты модуля SPI0 (SPI0CKR), показанный на рис.21.10, управляетчастотой тактирования последовательного интерфейса при работе в ведущем режиме.
При работе в ведомомрежиме содержимое этого регистра игнорируется. Когда модуль SPI0 настроен как ведущий, максимальнаяскорость передачи данных (в бит/сек) равна половине системной тактовой частоты (12,5 МГц или меньше).Когда модуль SPI настроен как ведомый, максимальная скорость передачи данных (в бит/сек) дляполнодуплексного режима работы равна 1/10 системной тактовой частоты, при условии, что сигналы отведущего SCK, NSS (в 4-х проводном ведомом режиме) и последовательные входные данныесинхронизированы с системной тактовой частотой ведомого. Если сигналы от ведущего SCK, NSS ипоследовательные входные данные асинхронны, то максимальная скорость передачи данных (в бит/сек) должнабыть меньше 1/10 системной тактовой частоты.
В особом случае, когда ведущему требуется только передаватьданные ведомому и не требуется принимать от него данные (т.е. полудуплексный режим работы), ведомыймодуль SPI может принимать данные с максимальной скоростью (в бит/сек), равной ¼ системной тактовойчастоты. Это справедливо при условии, что сигналы от ведущего SCK, NSS и последовательные входныеданные синхронизированы с системной тактовой частотой ведомого.Рисунок 21.5. Временные диаграммы сигналов данных/тактирования в режимеведущегоSCK(CKPOL=0, CKPHA=0)SCK(CKPOL=0, CKPHA=1)SCK(CKPOL=1, CKPHA=0)SCK(CKPOL=1, CKPHA=1)MISO/MOSIСЗРБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0NSS (должен быть равенлог.’1’ в режиме снесколькими ведущими)Ред.
1.2256C8051F060/1/2/3/4/5/6/7Рисунок 21.6. Временные диаграммы сигналов данных/тактирования в режимеведомого (CKPHA = 0)SCK(CKPOL=0, CKPHA=0)SCK(CKPOL=1, CKPHA=0)MOSIСЗРБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0MISOСЗРБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0NSS (4-проводный режим)Рисунок 21.7. Временные диаграммы сигналов данных/тактирования в режимеведомого (CKPHA = 1)SCK(CKPOL=0, CKPHA=1)SCK(CKPOL=1, CKPHA=1)MOSIMISOСЗРСЗРБит 6Бит 6Бит 5Бит 5Бит 4Бит 4NSS (4-проводный режим)257Ред.
1.2Бит 3Бит 3Бит 2Бит 2Бит 1Бит 1Бит 0Бит 0C8051F060/1/2/3/4/5/6/721.6. Регистры специального назначения модуля SPIДля доступа к интерфейсу SPI и управления им используются четыре регистра специальногоназначения: регистр управления SPI0CN, регистр данных SPI0DAT, регистр конфигурации SPI0CFG и региструстановки тактовой частоты SPI0CKR. Все эти регистры описаны в следующих разделах.Рисунок 21.8. SPI0CFG: Регистр конфигурации модуля SPI0RSPIBSYR/WMSTENR/WCKPHAR/WCKPOLRSLVSELRNSSINБит 7Бит 6Бит 5Бит 4Бит 3Бит 2RSRMTБит 1RRXBMTБит 0Значениепри сбросе:00000111SFR Адрес: 0x9ASFR страница: 0Бит 7: SPIBSY: Флаг занятости модуля SPI0 (только для чтения).Этот бит устанавливается в 1 тогда, когда SPI0 находится в процессе передачи данных (ведущий иливедомый режим).Бит 6: MSTEN: Включение ведущего режима.0: Ведущий режим отключен.
Модуль SPI0 работает в ведомом режиме.1: Ведущий режим включен. Модуль SPI0 работает в ведущем режиме.Бит 5: CKPHA: Выбор активной фазы тактового сигнала модуля SPI0.Этот бит управляет фазой тактового сигнала модуля SPI0.0: Данные фиксируются по первому фронту периода сигнала SCK.*1: Данные фиксируются по второму фронту периода сигнала SCK.*Бит 4: CKPOL: Выбор полярности тактового сигнала модуля SPI0.Этот бит управляет полярностью тактового сигнала модуля SPI0.0: В состоянии простоя на линии SCK установлен сигнал низкого уровня.1: В состоянии простоя на линии SCK установлен сигнал высокого уровня.Бит 3: SLVSEL: Флаг выбора ведомого (только для чтения).Этот бит аппаратно устанавливается в 1 всякий раз, когда на линию NSS подан сигнал низкого уровня,и показывает, что SPI0 является выбранным ведомым. Этот бит сбрасывается в 0, если на линию NSSподан сигнал высокого уровня (ведомый не выбран).
Этот бит отражает не мгновенное состояниесигнала на выводе NSS, а скорее сглаженную (без паразитных выбросов) форму этого сигнала.Бит 2: NSSIN: Флаг мгновенного состояния сигнала на входном выводе NSS (только для чтения).Этот бит отражает мгновенное значение сигнала на входном выводе NSS в момент чтения этогорегистра. Этот вход не является сглаженным.Бит 1: SRMT: Флаг опустошения сдвигового регистра (только для чтения, действителен в ведомом режиме).Этот бит будет устанавливаться в 1 тогда, когда все данные переданы в сдвиговый регистр или изсдвигового регистра, и нет данных для считывания из буфера передатчика или записи в буферприемника.
Этот бит сбрасывается в 0, когда байт данных передается в сдвиговый регистр из буферапередатчика или при изменении сигнала SCK.Примечание: SRMT = 1 в ведущем режиме работы.Бит 0: RXBMT: Флаг опустошения буфера приемника (только для чтения, действителен в ведомом режиме).Этот бит будет устанавливаться в 1 тогда, когда буфер приемника прочитан и не содержит новыхданных. Если в буфере приемника имеются доступные для чтения новые данные, которые не былипрочитаны, то этот бит будет сброшен в 0.Примечание: RXBMT = 1 в ведущем режиме работы.* В ведомом режиме данные на линии MOSI выбираются в центре каждого битового интервала.
В ведущемрежиме данные на линии MISO выбираются за один цикл SYSCLK до окончания каждого битовогоинтервала, что позволяет обеспечить максимальное время установления сигнала для ведомого устройства.Временные параметры приведены в табл.21.1.Ред. 1.2258C8051F060/1/2/3/4/5/6/7Рисунок 21.9. SPI0CN: Регистр управления модуля SPI0R/WSPIFR/WWCOLR/WMODFR/WRXOVRNR/WNSSMD1R/WNSSMD0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2RTXBMTБит 1R/WSPIENЗначениепри сбросе:00000110Бит 0SFR Адрес: 0xF8(доступен в битовом SFR страница: 0режиме адресации)Бит 7: SPIF: Флаг прерывания от модуля SPI0.Этот бит аппаратно устанавливается в 1 по окончании передачи данных. Если прерыванияразрешены, то установка этого бита приведет к переходу на процедуру обслуживания прерыванияот модуля SPI0. Этот бит не сбрасывается аппаратно, его необходимо сбросить программно.Бит 6: WCOL: Флаг конфликта записи.Этот бит аппаратно устанавливается в 1 (и генерирует прерывание от модуля SPI0) и тем самымпоказывает, что была произведена попытка записи в регистр данных модуля SPI0, когда текущийсеанс передачи данных еще не завершился.