Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

TRF7960A - нужда от помощ
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=14359
Страница 1 от 1

Автор:  marcuka68 [ Пет Фев 12, 2016 6:12 pm ]
Заглавие:  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]
338 пъти

Автор:  marcuka68 [ Пон Фев 15, 2016 6:37 pm ]
Заглавие:  Re: TRF7960A - нужда от помощ

Разтърсих се във форума на TI и намерих описан същия проблем. Оказва се, че, ако се добави капацитет 20pF на MOSI пина, се записва коректно в регистъра на интегралната схема.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/