コード例 #1
0
ファイル: enc28j60.c プロジェクト: arthurgargon/smarthome
// Set register bank
void enc28j60_set_bank(uint8_t adr)
{
	uint8_t bank;

	if( (adr & ENC28J60_ADDR_MASK) < ENC28J60_COMMON_CR )
	{
		bank = (adr >> 5) & 0x03; //BSEL1|BSEL0=0x03
		if(bank != enc28j60_current_bank)
		{
			enc28j60_write_op(ENC28J60_SPI_BFC, ECON1, 0x03);
			enc28j60_write_op(ENC28J60_SPI_BFS, ECON1, bank);
			enc28j60_current_bank = bank;
		}
	}
コード例 #2
0
ファイル: enc28j60.c プロジェクト: freereaper/stm32_lwip
void enc28j60_set_bank(u8 address)
{
	/*if current bank not match, then switch it */
	if((address & BANK_MASK) != enc28j60_bank) {
		enc28j60_write_op(CMD_BIT_FIELD_CLR, ECON1, ECON1_BSEL1|ECON1_BSEL0);
		enc28j60_write_op(CMD_BIT_FIELD_SET, ECON1, (address&BANK_MASK)>>5);
		enc28j60_bank = (address&BANK_MASK);
	}
コード例 #3
0
ファイル: enc28j60.c プロジェクト: freereaper/stm32_lwip
void enc28j60_write(u8 address, u8 data)
{
	enc28j60_set_bank(address);
	enc28j60_write_op(CMD_WRITE_CTRL_REG, address, data);
}