Перейти к содержанию
    

MSP430_User

Новичок
  • Постов

    1
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Здравствуйте! Пытаюсь осуществить запись и считывание одного байта из внешней памяти 93lc46b. Для этого на память по интерфейсу SPI посылаются команды "Разрешения Очистки/Записи" (EWEN), "Записи" (WRITE), а затем "Чтения" (READ). Перед передачей команды на устройство посылается стартовый бит. Программа пока не оптимизирована, команды пересылаются по проверке флага UTXIFG1, а не с помощью канала ПДП. Подача сигнала CS на память осуществляется по порту ввода/вывода P1.2. Реакция со стороны устройства отсутствует. Подскажите пожалуйста, что я делаю не так. Может быть дело в задержках при передаче или сами пересылаемые команды имеют неправильный вид? Datasheet 93lc46b #include <msp430FG4618.h> unsigned char rsv = 0xFF; unsigned char rsv1 = 0xFF; int i; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Остановить WDT //настройки SPI P4SEL |= 0x38; // Р4.3, 4, 5 => SPI U1CTL = CHAR+SYNC+MM+SWRST; // 8 бит, SPI, ведущий U1TCTL |= CKPL+SSEL0+STC; // Полярность, ACLK, 3-пров. U1BR0 = 0x080 , U1BR1 = 0x00; // UCLK = ACLK U1MCTL = 0x00; // Биты модуляции ME2 |= USPIE1; // Включение SPI модуля U1CTL &= ~SWRST; // Разрешение SPI //настройка ввода/вывода порта P1.2 P1DIR |= 0x04; P1OUT &= ~0x04; i = 1000; while(i>0) i--; P1OUT |= 0x04; //разрешение Очистки/Записи while (!(IFG2 & UTXIFG1)); U1TXBUF = 0x01; //00000001 while (!(IFG2 & UTXIFG1)); U1TXBUF = 0x30; //00110000 P1OUT &= ~0x04; i = 1000; while(i>0) i--; P1OUT |= 0x04; //Запись while (!(IFG2 & UTXIFG1)); U1TXBUF = 0x01; //00000001 while (!(IFG2 & UTXIFG1)); U1TXBUF = 0x4A; //01001010 while (!(IFG2 & UTXIFG1)); U1TXBUF = 0xFF; //11001100 while (!(IFG2 & UTXIFG1)); U1TXBUF = 0xFF; //11001100 P1OUT &= ~0x04; i = 1000; while(i>0) i--; P1OUT |= 0x04; //Чтение while (!(IFG2 & UTXIFG1)); U1TXBUF = 0x01; //00000001 while (!(IFG2 & UTXIFG1)); U1TXBUF = 0x8A; //10001010 while (!(IFG2 & URXIFG1)); // Ожидаем готовность буфера приёма rsv = U1RXBUF; // Прием данных U1TXBUF = 0x00; while (!(IFG2 & URXIFG1)); // Ожидаем готовность буфера приёма rsv1 = U1RXBUF; // Прием данных P1OUT &= ~0x04; i = 1000; while(i>0) i--; }
×
×
  • Создать...