23 #ifndef _INCLUDE_HAL_H_ 24 #define _INCLUDE_HAL_H_ 38 #define MMC_CS GPIO_B3 59 #define GPIO_PORT2SFR(port,base) _SFR_IO8( (((port) * 3) + (base)) ) 60 #define GPIO_PIN2SFR(pin,base) GPIO_PORT2SFR((pin>>3),(base) ) 63 #define GPIO_PIN_MODE(pin) gpio_pin_sfr_mode(pin) 66 #define GPIO_PIN_DIR_IN(pin) BIT_CLR(GPIO_PIN2SFR(pin,DDR_BASE), ((pin) & 7)) 67 #define GPIO_PIN_TST(pin) BIT_TST(GPIO_PIN2SFR(pin,PIN_BASE), ((pin) & 7)) 68 #define GPIO_PIN_RD(pin) (GPIO_PIN_DIR_IN(pin), GPIO_PIN_TST(pin)) 71 #define GPIO_PIN_LATCH_LOW(pin) BIT_CLR(GPIO_PIN2SFR(pin,PORT_BASE), ((pin) & 7)) 72 #define GPIO_PIN_LATCH_HI(pin) BIT_SET(GPIO_PIN2SFR(pin,PORT_BASE), ((pin) & 7)) 73 #define GPIO_PIN_LATCH_RD(pin) BIT_TST(GPIO_PIN2SFR(pin,PORT_BASE), ((pin) & 7)) 76 #define GPIO_PIN_DIR_OUT(pin) BIT_SET(GPIO_PIN2SFR(pin,DDR_BASE), ((pin) & 7)) 77 #define GPIO_PIN_LOW(pin) (GPIO_PIN_LATCH_LOW(pin), GPIO_PIN_DIR_OUT(pin)) 78 #define GPIO_PIN_HI(pin) (GPIO_PIN_LATCH_HI(pin), GPIO_PIN_DIR_OUT(pin)) 79 #define GPIO_PIN_WR(pin,level) ((level) ? GPIO_PIN_HI(pin) : GPIO_PIN_LOW(pin)) 82 #define GPIO_PIN_FLOAT(pin) GPIO_PIN_DIR_IN(pin) 84 #define GPIO_PORT_DIR_OUT(port) (GPIO_PORT2SFR(port,DDR_BASE) = 0xff) 85 #define GPIO_PORT_DIR_IN(port) (GPIO_PORT2SFR(port,DDR_BASE) = 0x00) 88 #define GPIO_PORT_PINS_RD(port) (GPIO_PORT2SFR(port,PIN_BASE) & 0xff) 89 #define GPIO_PORT_DDR_RD(port) (GPIO_PORT2SFR(port,DDR_BASE) & 0xff) 90 #define GPIO_PORT_LATCH_WR(port,val) (GPIO_PORT2SFR(port,PORT_BASE) = (val)) 91 #define GPIO_PORT_LATCH_RD(port,val) GPIO_PORT2SFR(port,PORT_BASE) 93 #define GPIO_PORT_RD(port) (GPIO_PORT_DIR_IN(port), GPIO_PORT_PINS_RD(port)) 94 #define GPIO_PORT_WR(port,val) (GPIO_PORT_DIR_OUT(port), GPIO_PORT_LATCH_WR(port,val)) 137 #define FUNC_GPIO11 3 140 #define GPIO_PIN_MODE(pin) gpio_pin_sfr_mode(pin); 143 #define GPIO_PIN_DIR_IN(pin) GPIO_REG_WRITE(GPIO_ENABLE_W1TC_ADDRESS, 1<<(pin)) 144 #define GPIO_PIN_TST(pin) BIT_TST(GPIO_REG_READ(GPIO_IN_ADDRESS),(pin)) 145 #define GPIO_PIN_RD(pin) GPIO_PIN_DIR_IN(pin), GPIO_PIN_TST(pin) 149 #define GPIO_PIN_LATCH_LOW(pin) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, 1<<(pin)) 150 #define GPIO_PIN_LATCH_HI(pin) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, 1<<(pin)) 151 #define GPIO_PIN_LATCH_RD(pin) BIT_TST(GPIO_REG_READ(GPIO_OUT_DATA),(pin)) 155 #define GPIO_PIN_DIR_OUT(pin) GPIO_REG_WRITE(GPIO_ENABLE_W1TS_ADDRESS, 1<<(pin)) 156 #define GPIO_PIN_HI(pin) GPIO_PIN_LATCH_HI(pin), GPIO_PIN_DIR_OUT(pin) 157 #define GPIO_PIN_LOW(pin) GPIO_PIN_LATCH_LOW(pin), GPIO_PIN_DIR_OUT(pin) 158 #define GPIO_PIN_WR(pin,val) (val) ? GPIO_PIN_HI(pin) : GPIO_PIN_LOW(pin) 165 #define GPIO16_PIN_MODE() gpio_pin_sfr_mode(16) 168 #define GPIO16_PIN_DIR_IN() gpio16_pin_dir(0) 169 #define GPIO16_PIN_RD() ( READ_PERI_REG(RTC_GPIO_IN_DATA) & 1 ) 170 #define GPIO16_RD() ( GPIO16_PIN_DIR_IN(), GPIO16_PIN_RD() ) 174 #define GPIO16_PIN_LATCH_LOW() \ 175 WRITE_PERI_REG(RTC_GPIO_OUT, (READ_PERI_REG(RTC_GPIO_OUT)&(uint32_t)0xfffffffe) ) 176 #define GPIO16_PIN_LATCH_HI() \ 177 WRITE_PERI_REG(RTC_GPIO_OUT, (READ_PERI_REG(RTC_GPIO_OUT)&(uint32_t)0xfffffffe)|(uint32_t)1) 178 #define GPIO16_LATCH_RD() ( READ_PERI_REG(RTC_GPIO_OUT) & 1 ) 181 #define GPIO16_PIN_DIR_OUT() gpio16_pin_dir(1) 182 #define GPIO16_PIN_HI() GPIO16_PIN_LATCH_HI(), GPIO16_PIN_DIR_OUT() 183 #define GPIO16_PIN_LOW() GPIO16_PIN_LATCH_LOW(), GPIO16_PIN_DIR_OUT() 184 #define GPIO16_PIN_OUT(val) (val) ? GPIO16_PIN_HI() : GPIO16_PIN_LOW() 187 #define GPIO16_PIN_FLOAT() GPIO16_PIN_DIR_IN() void spi_init(uint32_t clock, int pin)
void chip_deselect(uint8_t pin)
set GPIO to deselect - HI
void spi_TXRX_buffer(const uint8_t *data, int count)
SPI write/read buffer.
void chip_select_init(uint8_t pin)
CHIP select HAL.
uint8_t spi_chip_select_status(void)
SPI CS pin status return CS GPIO pin number or 0xff.
void gpio16_pin_dir(uint8_t out)
void spi_waitReady(void)
SPI bus wrapper functions for multiple device support.
void chip_addr(int addr)
set address on GPIO lines
uint8_t gpio_pin_rd(uint8_t pin)
read GPIO pin
void gpio_pin_sfr_mode(int pin)
AVR GPIO MACROs.
void spi_TX_buffer(const uint8_t *data, int count)
SPI write buffer.
uint8_t spi_RX(void)
SPI read 1 byte.
void spi_TX(uint8_t data)
SPI write 1 byte.
void gpio_pin_out(uint8_t pin, uint8_t val)
set GPIO pin state HI or LOW
void spi_begin(uint32_t clock, int pin)
SPI chip enable function Function waits for current tranaction to finish before proceeding.
void chip_select(uint8_t pin)
set GPIO to select - LOW
void chip_addr_init(void)
ADDRESS select HAL.
uint8_t spi_TXRX(uint8_t data)
SPI read and write 1 byte.
void spi_RX_buffer(const uint8_t *data, int count)
SPI read buffer.
void spi_end(uint8_t pin)
SPI chip disable function wait for current tranaction to finish!