//this gets an experiment, plus additional data, from the host //A full cluster will be transferred void get_experiment_from_host_to_SD(void) { USB_USART->rtor=0; //going to use PDCA for receiving data, so disable receive timeout pdca_disable(USB_USART_RX_PDCA_CHANNEL); my_pdca_init_channel(USB_USART_RX_PDCA_CHANNEL, (uint32_t)(&bank0[0]),samplebuffer_size, USB_USART_RX_PDCA_PID, 0, 0, PDCA_TRANSFER_SIZE_BYTE); pdca_enable(USB_USART_RX_PDCA_CHANNEL); while(!(pdca_get_transfer_status(USB_USART_RX_PDCA_CHANNEL) & AVR32_PDCA_TRC_MASK)); //wait until transfer is done pdca_disable(USB_USART_RX_PDCA_CHANNEL); //reset USART RX channel to receive host commands USB_USART->cr|=AVR32_USART_CR_STTTO_MASK; //changing back to receiving command mode USB_USART->rtor=15000; //so reenable timeout pdca_load_channel(USB_USART_RX_PDCA_CHANNEL, (&host_USART_buffer),(uint32_t)(sizeof(host_USART_buffer))); pdca_enable(USB_USART_RX_PDCA_CHANNEL); spi_selectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS); while(check_busy_fast()!=0xFF); spi_unselectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS); my_SD_SPI_block_write_multi(bank0,experiment_base_address,blocks_per_cluster); //write data to SD spi_selectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS); while(check_busy_fast()!=0xFF); spi_unselectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS); }
static void cvTimer_callback(void* o) { u8 i; for(i=0;i<4;i++) if(aout[i].now != aout[i].target) { aout[i].now += (aout[i].target - aout[i].now) / aout[i].step; aout[i].step--; monomeFrameDirty++; } spi_selectChip(SPI,DAC_SPI); spi_write(SPI,0x31); spi_write(SPI,aout[2].now>>4); spi_write(SPI,aout[2].now<<4); spi_write(SPI,0x31); spi_write(SPI,aout[0].now>>4); spi_write(SPI,aout[0].now<<4); spi_unselectChip(SPI,DAC_SPI); spi_selectChip(SPI,DAC_SPI); spi_write(SPI,0x38); spi_write(SPI,aout[3].now>>4); spi_write(SPI,aout[3].now<<4); spi_write(SPI,0x38); spi_write(SPI,aout[1].now>>4); spi_write(SPI,aout[1].now<<4); spi_unselectChip(SPI,DAC_SPI); }
void bfin_get_num_params(volatile u32* num) { #if 1 *num = 0; #else u16 x; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_NUM_PARAMS_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); print_dbg("\r\n : spi_write MSG_GET_NUM_PARAMS"); // read num spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); *num = (u8)(x & 0xff); print_dbg("\r\n : spi_read numparams: "); print_dbg_ulong(*num); app_resume(); #endif }
// get module name void bfin_get_module_name(volatile char* buf) { char name[MODULE_NAME_LEN]; u16 x; // u16 for spi_read() u8 i; // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_MODULE_NAME_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); for(i=0; i<MODULE_NAME_LEN; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); name[i] = (char)(x & 0xff); } }
static int special_qt60168_send_cmd(unsigned char cmd) { static int state=0; switch(state) { case 0: // Select QT60168 spi_selectChip(QT60168_SPI,QT60168_SPI_NCPS); // Write CMD spi_write(QT60168_SPI, cmd); // Unselect QT60168 spi_unselectChip(QT60168_SPI,QT60168_SPI_NCPS); state = 1; Read_data=1; break; case 1: if(Read_data==0) { state=0; } break; default: state=0; } return state; }
void bfin_end_transfer(void) { spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); print_dbg("\r\n done loading; waiting... "); delay_ms(100); // delay_ms(2000); /* print_dbg("\r\n done waiting; reporting... "); */ /* bfin_report_params(); */ }
// perform a conversion on all 4 channels static void adc_convert(u16 (*dst)[4]) { #if 1 #else u16 cmd, val; // data into AD7923 is a left-justified 12-bit value in a 16-bit word // so, always lshift the command before sending cmd = ( AD7923_CMD_BASE ) << 4; spi_selectChip(ADC_SPI, ADC_SPI_NPCS); spi_write(ADC_SPI, cmd); spi_unselectChip(ADC_SPI, ADC_SPI_NPCS); // get channel 0, setup channel 1 cmd = ( AD7923_CMD_BASE | AD7923_CTL_ADD0 ) << 4; spi_selectChip(ADC_SPI, ADC_SPI_NPCS); spi_write(ADC_SPI, cmd); spi_read(ADC_SPI, &val); spi_unselectChip(ADC_SPI, ADC_SPI_NPCS); (*dst)[0] = val & 0xfff; // get channel 1, setup channel 2 cmd = ( AD7923_CMD_BASE | AD7923_CTL_ADD1 ) << 4; spi_selectChip(ADC_SPI, ADC_SPI_NPCS); spi_write(ADC_SPI, cmd); spi_read(ADC_SPI, &val); spi_unselectChip(ADC_SPI, ADC_SPI_NPCS); (*dst)[1] = val & 0xfff; // get channel 2, setup channel 3 cmd = ( AD7923_CMD_BASE | AD7923_CTL_ADD1 | AD7923_CTL_ADD0 ) << 4; spi_selectChip(ADC_SPI, ADC_SPI_NPCS); spi_write(ADC_SPI, cmd); spi_read(ADC_SPI, &val); spi_unselectChip(ADC_SPI, ADC_SPI_NPCS); (*dst)[2] = val & 0xfff; // get channel 3, dummy write cmd = ( AD7923_CMD_BASE ) << 4; spi_selectChip(ADC_SPI, ADC_SPI_NPCS); spi_write(ADC_SPI, cmd); spi_read(ADC_SPI, &val); spi_unselectChip(ADC_SPI, ADC_SPI_NPCS); (*dst)[3] = val & 0xfff; #endif }
void bfin_disable(void) { #if 1 #else // disable audio processing spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_DISABLE_AUDIO); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); #endif }
void bfin_get_num_params(volatile u32* num) { u16 x; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_NUM_PARAMS_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // read num spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); *num = (u8)(x & 0xff); app_resume(); }
void init_dacs(void) { // setup daisy chain for two dacs spi_selectChip(DAC_SPI, DAC_SPI_NPCS); spi_write(SPI,0x80); spi_write(SPI,0xff); spi_write(SPI,0xff); spi_unselectChip(DAC_SPI, DAC_SPI_NPCS); reset_dacs(); }
void bfin_get_param_desc(u16 paramIdx, volatile ParamDesc* pDesc) { ParamValue pval; u16 x; // u16 for spi_read() u8 i; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_PARAM_DESC_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // idx spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, paramIdx); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // read label for(i=0; i<PARAM_LABEL_LEN; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->label[i] = (char)(x & 0xff); } // read unit for(i=0; i<PARAM_UNIT_LEN; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->unit[i] = (char)(x & 0xff); } // read type spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->type = (U8)(x & 0xff); // read min for(i=0; i<4; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[i] = (u8)(x & 0xff); } pDesc->min = pval.asInt; // read max for(i=0; i<4; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[i] = (u8)(x & 0xff); } pDesc->max = pval.asInt; app_resume(); }
// get module version void bfin_get_module_version(ModuleVersion* vers) { u16 x; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_MODULE_VERSION_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // major spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); vers->maj = x; // minor spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); vers->min = x; // rev vers->rev = 0; // rev high spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); vers->rev |= ((x << 8) & 0xff00); // rev low spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); vers->rev |= (x & 0x00ff); app_resume(); }
// setup ad7923 void init_adc(void) { #if 1 #else u16 cmd; // at powerup, the part wants a dummy conversion with DIN high spi_selectChip(ADC_SPI, ADC_SPI_NPCS); spi_write(ADC_SPI, 0xffff); spi_unselectChip(ADC_SPI, ADC_SPI_NPCS); // wait for powerup time (5us in datasheet) delay_us(5); // write base configuration cmd = AD7923_CMD_BASE << 4; spi_selectChip( ADC_SPI, ADC_SPI_NPCS ); spi_write( ADC_SPI, cmd ); spi_unselectChip( ADC_SPI, ADC_SPI_NPCS ); #endif }
void updateCvOuts(void) { // let's output values[0] to CV A and values[1] to CV B // output range is 0..4095, values[] is 0..64, so we need to scale cv0 = values[0] << 6; if (cv0 > 4095) cv0 = 4095; // keep it within the range cv1 = values[1] << 6; if (cv1 > 4095) cv1 = 4095; // write to DAC spi_selectChip(SPI,DAC_SPI); spi_write(SPI,0x31); // update A spi_write(SPI,cv0>>4); spi_write(SPI,cv0<<4); spi_unselectChip(SPI,DAC_SPI); spi_selectChip(SPI,DAC_SPI); spi_write(SPI,0x38); // update B spi_write(SPI,cv1>>4); spi_write(SPI,cv1<<4); spi_unselectChip(SPI,DAC_SPI); }
/*! \brief Selects or unselects a DF memory. * * \param memidx Memory ID of DF to select or unselect. * \param bSelect Boolean indicating whether the DF memory has to be selected. */ static void at45dbx_chipselect_df(U8 memidx, Bool bSelect) { if (bSelect) { // Select SPI chip. spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); } else { // Unselect SPI chip. spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); } }
// get module name void bfin_get_module_name(volatile char* buf) { #if 1 #else u16 x; // u16 for spi_read() u8 i; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_MODULE_NAME_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); for(i=0; i<MODULE_NAME_LEN; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); buf[i] = (char)(x & 0xff); } app_resume(); #endif }
//void bfin_set_param(u8 idx, f32 x ) { void bfin_set_param(u8 idx, fix16_t x ) { #if 1 #else //static u32 ticks = 0; ParamValueCommon pval; pval.asInt = (s32)x; print_dbg("\r\n bfin_set_param, idx: "); print_dbg_ulong(idx); print_dbg(",\t val: 0x"); print_dbg_hex((u32)x); /* print_dbg(", \t elapsed ms: "); print_dbg_ulong(tcTicks - ticks); print_dbg("\r\n"); ticks = tcTicks; */ // app_pause(); // command bfin_wait(); spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_SET_PARAM_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //idx bfin_wait(); spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, idx); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // val0 bfin_wait(); spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[0]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // val1 bfin_wait(); spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[1]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //val2 bfin_wait(); spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[2]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //val3 bfin_wait(); spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[3]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // app_resume(); #endif }
__interrupt #endif void rtc_irq(void) { static volatile int delay_count=0; static unsigned short all_key= 0; static int update_delay = 0; delay_count++; update_delay++; if(update_delay>10) { if(special_qt60168_report_all_key(&all_key)==true) { update_delay=0; //gpio_tgl_gpio_pin(LED2_GPIO); Old_status = New_status; New_status = all_key; // The one that has just been read if(Old_status != New_status) { update_joystick_status( New_status); } if(New_status!=0) { // LED2 on if key is currently pressed gpio_clr_gpio_pin(LED2_GPIO); } else { gpio_set_gpio_pin(LED2_GPIO); } } } if(Read_data==1) { Read_data=2; delay_count=0; } if((delay_count>1)&&(Read_data==2)) { // We can read the DATA // Select QT60168 spi_selectChip(QT60168_SPI,QT60168_SPI_NCPS); // Read Reply spi_read(QT60168_SPI, &Data); // Unselect QT60168 spi_unselectChip(QT60168_SPI,QT60168_SPI_NCPS); Read_data=0; } // clear the interrupt flag rtc_clear_interrupt(&AVR32_RTC); }
// get parameter value s32 bfin_get_param(u8 idx) { #if 1 #else ParamValueCommon pval; u16 x; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_PARAM_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // idx spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, idx); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); /// read value spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); // don't care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[0] = (u8)x; spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); // don't care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[1] = (u8)x; spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); // don't care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[2] = (u8)x; spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); // don't care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[3] = (u8)x; app_resume(); return pval.asInt; #endif }
ISR(rtc_irq, AVR32_RTC_IRQ_GROUP, AVR32_INTC_INT0) { static volatile int delay_count = 0; static unsigned short all_key = 0; static int update_delay = 0; delay_count++; update_delay++; if (update_delay > 10) { if (special_qt60168_report_all_key(&all_key) == true) { update_delay = 0; controller_keys_update(all_key); } } if (Read_data == 1) { Read_data = 2; delay_count = 0; } if ((delay_count > 1) && (Read_data == 2)) { // We can read the DATA // Select QT60168 spi_selectChip(QT60168_SPI,QT60168_SPI_NCPS); // Read Reply spi_read(QT60168_SPI, &Data); // Unselect QT60168 spi_unselectChip(QT60168_SPI,QT60168_SPI_NCPS); Read_data = 0; } // clear the interrupt flag rtc_clear_interrupt(&AVR32_RTC); }
//void bfin_set_param(u8 idx, f32 x ) { void bfin_set_param(u8 idx, fix16_t x ) { static ParamValue pval; pval.asInt = (s32)x; print_dbg("\r\n bfin_set_param, idx: "); print_dbg_ulong(idx); print_dbg(", val: 0x"); print_dbg_hex((u32)x); // app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_SET_PARAM_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //idx spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, idx); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //val0 spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[0]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // val1 spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[1]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //val2 spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[2]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); //val3 spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, pval.asByte[3]); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // app_resume(); }
/*! \brief Writes the \a ctrl control word. */ static void aic23b_write_control_word(aic23b_ctrl_t ctrl) { #if AIC23B_CTRL_INTERFACE == AIC23B_CTRL_INTERFACE_TWI int twi_status; aic23b_ctrl_t my_ctrl = ctrl; twi_package_t twi_package = { .chip = AIC23B_TWI_ADDRESS, .addr_length = 0, .buffer = &my_ctrl, .length = sizeof(my_ctrl) }; do { twi_status=twi_master_write(AIC23B_TWI, &twi_package); } while( twi_status != TWI_SUCCESS ); #elif AIC23B_CTRL_INTERFACE == AIC23B_CTRL_INTERFACE_SPI spi_selectChip(AIC23B_SPI, AIC23B_SPI_NPCS); spi_write(AIC23B_SPI, *(uint16_t *)&ctrl); spi_unselectChip(AIC23B_SPI, AIC23B_SPI_NPCS); #endif } /*! \name Low-Level Interface */ //! @{ void aic23b_configure_freq(int master_clock_hz, int sample_rate_hz) { aic23b_src_t src; src.data = AIC23B_DEFAULT(AIC23B_SRC); src.clkout = 0; src.clkin = 0; switch (master_clock_hz) { case 12000000: src.usb = 1; if (sample_rate_hz < (8000 + 8021) / 2) { // 8000 Hz src.sr = 0x3; src.bosr = 0; } else if (sample_rate_hz < (8021 + 32000) / 2) { // 8021 Hz src.sr = 0xB; src.bosr = 1; } else if (sample_rate_hz < (32000 + 44100) / 2) { // 32000 Hz src.sr = 0x6; src.bosr = 0; } else if (sample_rate_hz < (44100 + 48000) / 2) { // 44100 Hz src.sr = 0x8; src.bosr = 1; } else if (sample_rate_hz < (48000 + 88200) / 2) { // 48000 Hz src.sr = 0x0; src.bosr = 0; } else if (sample_rate_hz < (88200 + 96000) / 2) { // 88200 Hz src.sr = 0xF; src.bosr = 1; } else { // 96000 Hz src.sr = 0x7; src.bosr = 0; } break; case 11289600: src.usb = 0; if (sample_rate_hz < (8021 + 22050) / 2) { // 8021 Hz src.sr = 0xB; src.bosr = 0; } else if (sample_rate_hz < (22050 + 88200) / 2) { // 22050, 44100 and 48000 Hz src.sr = 0x8; src.bosr = 0; } else { // 88200 Hz src.sr = 0xF; src.bosr = 0; } break; case 18432000: src.usb = 0; src.sr = 0; src.bosr = 1; break; default: //Not supported return; } aic23b_write_reg(AIC23B_SRC, src.data); }
void bfin_end_transfer(void) { spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); }
int main(void) { sysclk_init(); int i=0; // board_init(); sysclk_enable_pba_module(SYSCLK_SPI); // spi_reset(SPI_EXAMPLE); // spi_set_master_mode(SPI_EXAMPLE); // spi_disable_modfault(SPI_EXAMPLE); // spi_disable_loopback(SPI_EXAMPLE); // spi_set_chipselect(SPI_EXAMPLE,(1 << AVR32_SPI_MR_PCS_SIZE) - 1); // spi_disable_variable_chipselect(SPI_EXAMPLE); // spi_disable_chipselect_decoding(SPI_EXAMPLE); // spi_set_delay(SPI_EXAMPLE,0); // spi_set_chipselect_delay_bct(SPI_EXAMPLE,0,0); // spi_set_chipselect_delay_bs(SPI_EXAMPLE,0,0); // spi_set_bits_per_transfer(SPI_EXAMPLE,0, 8); // spi_set_baudrate_register(SPI_EXAMPLE,0, getBaudDiv(1000000, sysclk_get_peripheral_bus_hz(SPI_EXAMPLE))); // spi_enable_active_mode(SPI_EXAMPLE,0); // spi_set_mode(SPI_EXAMPLE,0,SPI_MODE_0); static const gpio_map_t SPI_GPIO_MAP = { {AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION }, {AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION}, {AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION}, {AT45DBX_SPI_NPCS0_PIN, AT45DBX_SPI_NPCS0_FUNCTION }, // {AT45DBX_SPI_NPCS1_PIN, AT45DBX_SPI_NPCS1_FUNCTION }, }; // Assign GPIO to SPI. gpio_enable_module(SPI_GPIO_MAP, sizeof(SPI_GPIO_MAP) / sizeof(SPI_GPIO_MAP[0])); spi_options_t spiOptions = { .reg = 0, .baudrate = 1000000, .bits = 8, .trans_delay = 0, .spck_delay = 0, .stay_act = 1, .spi_mode = 0, .modfdis = 1 }; // Initialize as master. spi_initMaster(SPI_EXAMPLE, &spiOptions); // Set SPI selection mode: variable_ps, pcs_decode, delay. spi_selectionMode(SPI_EXAMPLE, 0, 0, 0); // Enable SPI module. spi_enable(SPI_EXAMPLE); // spi_setupChipReg( SPI, &spiOptions, FPBA_HZ ); spi_setupChipReg(SPI_EXAMPLE, &spiOptions, sysclk_get_pba_hz() ); spi_enable(SPI_EXAMPLE); while (true) { i++; delay_ms(10); // status = spi_at45dbx_mem_check(); spi_selectChip(SPI_EXAMPLE,0); spi_put(SPI_EXAMPLE,i); spi_unselectChip(SPI_EXAMPLE,0); } }
void bfin_get_param_desc(u16 paramIdx, volatile ParamDesc* pDesc) { #if 1 #else ParamValueCommon pval; u16 x; // u16 for spi_read() u8 i; app_pause(); // command spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_GET_PARAM_DESC_COM); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // idx spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, paramIdx); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // read label for(i=0; i<PARAM_LABEL_LEN; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->label[i] = (char)(x & 0xff); } /* //// don't need with new type system... didn't exactly need anyways // read unit for(i=0; i<PARAM_UNIT_LEN; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->unit[i] = (char)(x & 0xff); } */ // read type spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->type = (U8)(x & 0xff); // read min for(i=0; i<4; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[i] = (u8)(x & 0xff); } pDesc->min = pval.asInt; // read max for(i=0; i<4; i++) { spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pval.asByte[i] = (u8)(x & 0xff); } pDesc->max = pval.asInt; // read radix spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, 0); //dont care spi_read(BFIN_SPI, &x); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); pDesc->radix = (u8)(x & 0xff); app_resume(); #endif }
void bfin_end_transfer(void) { #if 1 #else spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); #endif }
void bfin_end_transfer(void) { spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); // delay_ms(200); // bfin_report_params(); }
void bfin_enable(void) { // enable audio processing spi_selectChip(BFIN_SPI, BFIN_SPI_NPCS); spi_write(BFIN_SPI, MSG_ENABLE_AUDIO); spi_unselectChip(BFIN_SPI, BFIN_SPI_NPCS); }