| //return port().POPR; | //return port().POPR; | ||||
| } | } | ||||
| uint16_t transfer16(uint16_t data) { | uint16_t transfer16(uint16_t data) { | ||||
| uint16_t ret_val = transfer(data >> 8); | |||||
| ret_val = (ret_val << 8) | transfer(data & 255); | |||||
| //port().SR = SPI_SR_TCF; | |||||
| //port().PUSHR = data | SPI_PUSHR_CTAS(1); | |||||
| //while (!(port().SR & SPI_SR_TCF)) ; // wait | |||||
| //return port().POPR; | |||||
| return ret_val; | |||||
| uint32_t tcr = port->TCR; | |||||
| port->TCR = (tcr & 0xfffff000) | LPSPI_TCR_FRAMESZ(15); // turn on 16 bit mode | |||||
| port->TDR = data; // output 16 bit data. | |||||
| while ((port->RSR & LPSPI_RSR_RXEMPTY)) ; // wait while the RSR fifo is empty... | |||||
| port->TCR = tcr; // restore back | |||||
| return port->RDR; | |||||
| } | } | ||||
| void inline transfer(void *buf, size_t count) {transfer(buf, buf, count);} | void inline transfer(void *buf, size_t count) {transfer(buf, buf, count);} |