Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ: Программный i2c на stm32 написаный мной практически без всяких навыков програмирования но работающий

Отправлено ovik89 (91.122.164.51) 26 марта 2010, г. 18:38
В ответ на: Программный интерфейс I2C на СИ CV AVR. Свершилось. Мож кому пригодится. отправлено dshabrov 25 марта 2010, г. 14:02

void readi2c(u8 slave,u8 reg)
{
int i;
u8 f,d;
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);
d=slave;
f=0x80;

for(i=0;i<8;i++)
{
if (d&f) GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
f=f>>1;
}

//GPIO_SetBits(GPIOB, GPIO_Pin_6);
//if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6))USART_SendData(USART1,0x30);
//else USART_SendData(USART1,0x31);
//GPIO_ResetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100); //ack

d=reg;
f=0x80;

for(i=0;i<8;i++)
{
if (d&f) GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
f=f>>1;
}

//GPIO_SetBits(GPIOB, GPIO_Pin_6);
//if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6))USART_SendData(USART1,0x30);
//else USART_SendData(USART1,0x31);
//GPIO_ResetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100); //ack

GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);


d=slave+1;
f=0x80;

for(i=0;i<8;i++)
{
if (d&f) GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
f=f>>1;
}

//GPIO_SetBits(GPIOB, GPIO_Pin_6);
//if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6))USART_SendData(USART1,0x30);
//else USART_SendData(USART1,0x31);
//GPIO_ResetBits(GPIOB, GPIO_Pin_6);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100); //ack


GPIO_SetBits(GPIOB, GPIO_Pin_6);




f=0x80;

for(i=0;i<8;i++)
{
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6))USART_SendData(USART1,0x31);
else USART_SendData(USART1,0x30);
Delay(1000);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);
f=f>>1;
}
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
Delay(100);

GPIO_SetBits(GPIOB, GPIO_Pin_7);
Delay(100);
GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(100);

}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите два из трёх, получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru