1、新建Thread,在Thread中添加FW-Connectivity-SPI FW Device on sf_spi
2、添加SPI Driver on r_rspi,选择通道0
3、Chip Port 01、Chip Pin 03、Chip Active Level Low
4、Peripherals-SPI-spi0-Enable,SLL0选择None
5、Pin-P103选择Output Mode(Init Low)
6、Generate Proj Content
7、Thread中添加以下代码读FLASH ID:
ssp_err = g_sf_spi_device0.p_api->open(g_sf_spi_device0.p_ctrl,g_sf_spi_device0.p_cfg);
if (SSP_SUCCESS != ssp_err)
{
sprintf(LogSpiThreadBuf, "\r\n g_sf_spi_device0->open %d", ssp_err);
g_sf_comms0.p_api->write(g_sf_comms0.p_ctrl, LogSpiThreadBuf, strlen(LogSpiThreadBuf)+1, TX_WAIT_FOREVER);
}
while (1)
{
Write[0] = 0x9F;
Write[1] = DUMMY_BYTE;
Write[2] = DUMMY_BYTE;
Write[3] = DUMMY_BYTE;
ssp_err = g_sf_spi_device0.p_api->writeRead(g_sf_spi_device0.p_ctrl,
(Write),
(Read),
4,
width,
TX_WAIT_FOREVER);
//err = g_sf_spi_device0.p_api->write(g_sf_spi_device0.p_ctrl, Write, 4, width, TX_WAIT_FOREVER);
if (SSP_SUCCESS != ssp_err)
{
sprintf(LogSpiThreadBuf, "\r\n g_sf_spi_device0->write %d", ssp_err);
g_sf_comms0.p_api->write(g_sf_comms0.p_ctrl, LogSpiThreadBuf, strlen(LogSpiThreadBuf)+1, TX_WAIT_FOREVER);
}
else
{
sprintf(LogSpiThreadBuf, "\r\n ID %x %x %x %x", Read[0], Read[1], Read[2], Read[3]);
g_sf_comms0.p_api->write(g_sf_comms0.p_ctrl, LogSpiThreadBuf, strlen(LogSpiThreadBuf)+1, TX_WAIT_FOREVER);
}
tx_thread_sleep (100);
}
运行结果:
ID ff c2 20 18
需要注意的是SLL0不能选P103 Chip Sel引脚,否则读取失败,区别见下图: