void ADS7846_wr_spi(uint_least8_t data) { #if defined(SOFTWARE_SPI) ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_SPI_MOSI); for (uint_least8_t mask = 0x80; mask != 0; mask >>= 1) { SCK_LOW(); if (mask & data) { MOSI_HIGH(); } else { MOSI_LOW(); } ADS7846_delay_ms(1); SCK_HIGH(); ADS7846_delay_ms(1); } SCK_LOW(); ADS7846_delay_ms(1); SCK_HIGH(); ADS7846_delay_ms(1); SCK_LOW(); #else SPI.transfer(data); #endif return; }
uint_least8_t ADS7846_rd_spi(void) { #if defined(SOFTWARE_SPI) ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SPI_MOSI); uint_least8_t data = 0; MOSI_LOW(); for (uint_least8_t bit = 8; bit != 0; bit--) { ADS7846_delay_ms(1); SCK_HIGH(); ADS7846_delay_ms(1); data <<= 1; if (MISO_READ()) { data |= 1; } else { //data |= 0; } SCK_LOW(); } return data; #else return SPI.transfer(0x00); #endif }
uchar ispEnterProgrammingMode() { uchar check; uchar count = 32 ; while (count--) { ispTransmit(0xAC) ; ispTransmit(0x53) ; check = ispTransmit(0) ; ispTransmit(0) ; if (check == 0x53) { return 0; } /* pulse SCK */ SCK_HIGH() ; /* SCK high */ ispDelay(); SCK_LOW() ; /* SCK low */ ispDelay(); } return 1; /* error: device dosn't answer */ }
uchar ispTransmit(uchar send_byte) { uchar rec_byte = 0; uchar i; for (i = 0; i < 8; i++) { /* set MSB to MOSI-pin */ if ((send_byte & 0x80) != 0) { MOSI_HIGH() ; /* MOSI high */ } else { MOSI_LOW() ; /* MOSI low */ } /* shift to next bit */ send_byte = send_byte << 1; /* receive data */ rec_byte = rec_byte << 1; if (READ_MISO() != 0) { rec_byte++; } /* pulse SCK */ SCK_HIGH() ; /* SCK high */ ispDelay() ; SCK_LOW() ; /* SCK low */ ispDelay() ; } return rec_byte; }
void DAC8760::wr_spi(uint_least8_t data) { #if defined(SOFTWARE_SPI) for(uint_least8_t mask=0x80; mask!=0; mask>>=1) { SCK_LOW(); if(mask & data) { MOSI_HIGH(); } else { MOSI_LOW(); } SCK_HIGH(); } SCK_LOW(); #else SPI.transfer(data); #endif return; }
void MI0283QT9::draw(uint_least16_t color) { #if defined(LCD_8BIT_SPI) // RS_HIGH(); //data # else //9th bit MOSI_HIGH(); //data SCK_LOW(); # if !defined(SOFTWARE_SPI) && (defined(__AVR__) || defined(ARDUINO_ARCH_AVR)) SPCR &= ~(1<<SPE); //disable SPI SCK_HIGH(); SPCR |= (1<<SPE); //enable SPI # else SCK_HIGH(); # endif #endif wr_spi(color>>8); #if defined(LCD_8BIT_SPI) // RS_HIGH(); //data # else //9th bit MOSI_HIGH(); //data SCK_LOW(); # if !defined(SOFTWARE_SPI) && (defined(__AVR__) || defined(ARDUINO_ARCH_AVR)) SPCR &= ~(1<<SPE); //disable SPI SCK_HIGH(); SPCR |= (1<<SPE); //enable SPI # else SCK_HIGH(); # endif #endif wr_spi(color); return; }
void ispConnect() { init_hw_timer() ; /* all ISP pins are inputs before */ /* now set output pins */ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN ; // Enable portB clock RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock configure_pins( GPIO_Pin_M64_RST, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTC ) ; configure_pins( GPIO_Pin_M64_SCK, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTA ) ; configure_pins( GPIO_Pin_M64_MOSI, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTB ) ; /* reset device */ RST_LOW() ; /* RST low */ SCK_LOW() ; /* SCK low */ /* positive reset pulse > 2 SCK (target) */ ispDelay(); RST_HIGH() ; /* RST high */ clockWait(64) ; RST_LOW() ; /* RST low */ }