void fm_gets(unsigned char *s, unsigned long len) { unsigned long head, tail; head = fm_head; tail = fm_tail; if(head != tail) { FM_CS_ENABLE(); ssi_write(FM_READ); ssi_write(tail>>16); ssi_write(tail>>8); ssi_write(tail); ssi_wait(); while(len--) { if(head != tail) { *s++ = ssi_readwrite(0xff); if(++tail >= fm_bytes) { tail = 0; } } else { break; } } FM_CS_DISABLE(); fm_tail = tail; }
void ssi_off(void) { ssi_wait(); GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_5); //SCK, SI = gpio GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_5, 0); //SCK, SI = low return; }