Отговори на тема  [ 2 мнения ] 
TRF7960A - нужда от помощ 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение TRF7960A - нужда от помощ
Здравейте, нямам опит с RFID, но опитвам да пусна този чип през SPI, на честота 2MHz. Прегледах примерни кодове на производителя за MSP430, като мисля, че по техен модел съм написал кода за PIC16F1829. Функцията за четене ми изчита, коректно според мен, 12 регистъра, колкото за проба.
Като опитам да настроя чипа да започне да предава (запис 0x21 в регистър на адрес 0x00) и след това си изчета стойността обратно за проверка, нищо не се е записало. Гледах на осцилоскопа, сигналите са коректни според мен.

Та някой, ако знае какъв може да е проблемът, как точно се инициализира чипът или някакъв акъл да може да даде, ще е много добре.


Код:
#define ADDR_CMD_BIT_READ_SELECT    6       // Set that bit number in the address/command byte for read operation.
#define ADDR_CMD_BIT_CONT_MODE      5       // Set that bit number in the address/command byte for continuous operation.

#define DATA_NO_TRANSITION          0xFF    // No bit transition during that byte sending.


static void trf7960a_write_register(const uint8_t reg_addr, const uint8_t reg_data)
{
    SPI_SS_PIN_LVL  = PIN_LVL_LOW;

    spi1_read_write(reg_addr);  // Send the address/command byte. The data returned is not important.
    spi1_read_write(reg_data);  // Send the register value.

    SPI_SS_PIN_LVL = PIN_LVL_HIGH;
}

static void trf7960a_read_continuous(const uint8_t reg_start_addr, const uint8_t reg_num, uint8_t *data)
{
    uint8_t addr_cmd_byte;
    uint8_t read_index;

    addr_cmd_byte   = reg_start_addr | (1<<ADDR_CMD_BIT_READ_SELECT) | (1<<ADDR_CMD_BIT_CONT_MODE);
    SPI_SS_PIN_LVL  = PIN_LVL_LOW;

    spi1_read_write(addr_cmd_byte); // Send the address/command byte. The data returned is not important.
    spi1_set_mode0();               // Clock polarity change required until read the data.

    for (read_index = 0; read_index < reg_num; read_index++)
        data[read_index] = spi1_read_write(DATA_NO_TRANSITION);

    SPI_SS_PIN_LVL = PIN_LVL_HIGH;

    spi1_set_mode1();               // After the read operation, restore the origin SPI mode.
}



Прикачени файлове:
trf7960.c [1.4 KiB]
337 пъти
Пет Фев 12, 2016 6:12 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение Re: TRF7960A - нужда от помощ
Разтърсих се във форума на TI и намерих описан същия проблем. Оказва се, че, ако се добави капацитет 20pF на MOSI пина, се записва коректно в регистъра на интегралната схема.


Пон Фев 15, 2016 6:37 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 2 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни