static rt_err_t wm_hostspi_init(struct rt_spi_configuration *cfg) { spi_clear_fifo(); spi_set_endian(1); if (cfg->data_width == 8) { tls_spi_trans_type(SPI_BYTE_TRANSFER); } if (cfg->data_width == 16) { tls_spi_trans_type(SPI_WORD_TRANSFER); } spi_set_mode(cfg->mode); spi_set_chipselect_mode(SPI_CS_INACTIVE_MODE); spi_force_cs_out(1); if(cfg->max_hz > BSP_SPI_MAX_HZ) { cfg->max_hz = BSP_SPI_MAX_HZ; } spi_set_sclk(cfg->max_hz); spi_set_tx_trigger_level(0); spi_set_rx_trigger_level(7); spi_set_rx_channel(1); spi_set_tx_channel(1); return RT_EOK; }
int spi_demo(char *buf) { // int time; tls_spi_slave_sel(SPI_SLAVE_CARD); tls_spi_trans_type(2); tls_spi_setup(TLS_SPI_MODE_0, TLS_SPI_CS_LOW, 100000); #if CS_CTRL_SOFT tls_reg_write32(HR_IOCTL_GP_SPI, 2); //cs 作为gpio18使用 tls_gpio_cfg(18, TLS_GPIO_DIR_OUTPUT, TLS_GPIO_ATTR_PULLLOW); #endif TestSPIReceiveData(); #if 1 // while(1) { TestSPITransferCMD(); TestSPIReceiveData(); OSTimeDly(10); } #endif #if 0 time = OSTimeGet(); printf("\ntime1 = %d\n",time); for(i = 0;i < 1000;i ++) #endif { //TestSPITransferData(); } #if 0 time = OSTimeGet(); printf("\ntime1 = %d\n",time); #endif return WM_SUCCESS; }