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

Россиянин

Новичок
  • Публикаций

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

  • Посещение

Репутация

0 Обычный
  1. Нужна помощь с кодеком TLV320AIC12K

    Цитата(dj_miles @ Feb 25 2014, 11:04) Спасибо за поправки!!! Даташит на TLV320AIC12K TLV320AIK12, схема в файле. Коды функций работы с I2C: void IIC_STR() { I2C2CONbits.SEN = 1; while (I2C2CONbits.SEN); } void IIC_RST() { I2C2CONbits.RSEN = 1; while (I2C2CONbits.RSEN); } void IIC_STP() { I2C2CONbits.PEN = 1; while (I2C2CONbits.PEN);} void IIC_WTX(unsigned char data){I2C2TRN = data; while (I2C2STATbits.TRSTAT == 1); while (I2C2STATbits.TBF == 1);} unsigned char IIC_WRX() { I2C2CONbits.RCEN = 1; while (I2C2CONbits.RCEN);I2C2CONbits.ACKEN = 1; while (I2C2CONbits.ACKEN); I2C2STATbits.I2COV = 0; return I2C2RCV;} void IIC_IDL(){ while(I2C2CONbits.SEN || I2C2CONbits.RSEN || I2C2CONbits.PEN || I2C2CONbits.RCEN || I2C2CONbits.ACKEN || I2C2STATbits.TRSTAT);} void IIC_ACK() { I2C2CONbits.ACKEN = 1; while (I2C2CONbits.ACKEN);} void I2C_Write(unsigned char add, unsigned char byte) { IIC_IDL(); IIC_STR(); IIC_WTX(0x80); IIC_WTX(add); IIC_STP(); IIC_IDL(); IIC_STR(); IIC_WTX(0x80); if (I2C2STATbits.ACKSTAT); IIC_WTX(add); if (I2C2STATbits.ACKSTAT); IIC_WTX(byte); if (I2C2STATbits.ACKSTAT); IIC_STP(); } unsigned char I2C_Read(unsigned char add) { unsigned char r = 0; IIC_IDL(); IIC_STR(); IIC_WTX(0x80); IIC_WTX(add); IIC_STP(); IIC_STR(); IIC_WTX(0x81); r = IIC_WRX(); IIC_STP(); return r; } Забыл коменты написать! Коды функций работы с I2C: void IIC_STR() { I2C2CONbits.SEN = 1; while (I2C2CONbits.SEN); } void IIC_RST() { I2C2CONbits.RSEN = 1; while (I2C2CONbits.RSEN); } void IIC_STP() { I2C2CONbits.PEN = 1; while (I2C2CONbits.PEN);} void IIC_WTX(unsigned char data){I2C2TRN = data; while (I2C2STATbits.TRSTAT == 1); while (I2C2STATbits.TBF == 1);} unsigned char IIC_WRX() { I2C2CONbits.RCEN = 1; while (I2C2CONbits.RCEN);I2C2CONbits.ACKEN = 1; while (I2C2CONbits.ACKEN); I2C2STATbits.I2COV = 0; return I2C2RCV;} void IIC_IDL(){ while(I2C2CONbits.SEN || I2C2CONbits.RSEN || I2C2CONbits.PEN || I2C2CONbits.RCEN || I2C2CONbits.ACKEN || I2C2STATbits.TRSTAT);} void IIC_ACK() { I2C2CONbits.ACKEN = 1; while (I2C2CONbits.ACKEN);} void I2C_Write(unsigned char add, unsigned char byte) { IIC_IDL(); //Ожидаем освобождения модуля I2C IIC_STR(); // Последовательность старт-бита IIC_WTX(0x80);//Адрес слейва с признаком записи if (I2C2STATbits.ACKSTAT); //Проверка подтверждения IIC_WTX(add); //Адрес регистра if (I2C2STATbits.ACKSTAT); IIC_WTX(byte); //Значение регистра if (I2C2STATbits.ACKSTAT); IIC_STP();//Стоп-бит } unsigned char I2C_Read(unsigned char add) { unsigned char r = 0; //Запись индекса регистра IIC_IDL(); //Ожидаем освобождения модуля I2C IIC_STR();// Последовательность старт-бита IIC_WTX(0x80);//Адрес слейва с признаком записи IIC_WTX(add); //Адрес регистра IIC_STP(); //Стоп-бит IIC_STR(); //Старт-бит IIC_WTX(0x81); //Адрес слейва с признаком чтения r = IIC_WRX(); //Чтение IIC_STP(); //Стоп-бит return r; } В Протеусе нарисована схма? В в версии 8.0 TLV320 не нашёл.