реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
romez777
сообщение Dec 28 2007, 05:42
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую,

пытаюсь завести TWI в режиме мастера под at91sam7s256. Судя по форуму, не я первый smile.gif Компилятор - arm-gcc. Взял appnote от Атмела с описанием TWI и кодом под IAR. Перенес на gcc, получилось следующее:

Код
#include "project.h"
#include "lib_twi.h"

...

#define TWI_BUS_CLOCK   100000   /* in Hz */
#define AT91C_MXL7001_I2C_ADDRESS (0xC0)

int main()
{
   char ConfigReg = 0xaa;
   /* TWI initialization @ TWI_BUS_CLOCK */
  AT91F_TWI_Open(TWI_BUS_CLOCK);

  while (1) {
     AT91F_TWI_WriteSingleIadr(AT91C_BASE_TWI,
                                             AT91C_MXL7001_I2C_ADDRESS,
                                             (char)0x0a,
                                             AT91C_TWI_IADRSZ_1_BYTE,
                                             &ConfigReg);
  }
}


Функции AT91F_TWI_* - взяты из lib_twi, идущей с reference кодом.
То есть посылаю в цикле 1 байт. На осциллографе вижу: start бит, первый бит адреса, потом нули (хотя посылаю 0xAA, "гребенку"), ACK и STOP бит.

Явно, что-то не так: независимо от посылаемых данных, картинка не меняется.

В чем проблема, где ошибка? Бракованный референс-код или проблемы в чипе?

Заранее премного благодарен!
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Dec 28 2007, 14:28
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(romez777 @ Dec 28 2007, 08:42) *
Приветствую,

пытаюсь завести TWI в режиме мастера под at91sam7s256. Судя по форуму, не я первый smile.gif Компилятор - arm-gcc. Взял appnote от Атмела с описанием TWI и кодом под IAR. Перенес на gcc, получилось следующее:

Код
#include "project.h"
#include "lib_twi.h"

...

#define TWI_BUS_CLOCK   100000   /* in Hz */
#define AT91C_MXL7001_I2C_ADDRESS (0xC0)

int main()
{
   char ConfigReg = 0xaa;
   /* TWI initialization @ TWI_BUS_CLOCK */
  AT91F_TWI_Open(TWI_BUS_CLOCK);

  while (1) {
     AT91F_TWI_WriteSingleIadr(AT91C_BASE_TWI,
                                             AT91C_MXL7001_I2C_ADDRESS,
                                             (char)0x0a,
                                             AT91C_TWI_IADRSZ_1_BYTE,
                                             &ConfigReg);
  }
}


Функции AT91F_TWI_* - взяты из lib_twi, идущей с reference кодом.
То есть посылаю в цикле 1 байт. На осциллографе вижу: start бит, первый бит адреса, потом нули (хотя посылаю 0xAA, "гребенку"), ACK и STOP бит.

Явно, что-то не так: независимо от посылаемых данных, картинка не меняется.

В чем проблема, где ошибка? Бракованный референс-код или проблемы в чипе?

Заранее премного благодарен!

аппаратно-то у Вас все правильно? линии должны быть подтянуты к "+"
Go to the top of the page
 
+Quote Post
romez777
сообщение Dec 29 2007, 06:57
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Цитата(sergik_vrn @ Dec 28 2007, 17:28) *
аппаратно-то у Вас все правильно? линии должны быть подтянуты к "+"

Да, железо проверяли - все корректно.
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Dec 29 2007, 07:01
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(romez777 @ Dec 29 2007, 09:57) *
Да, железо проверяли - все корректно.

тогда, раз уж Вы посылаете данные в цикле, может стоит проверить конец передачи? или это уже реализовано внутри библиотечной функции? я просто с этим чипом и библиотекой не работал
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 04:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016