SYD8801 SPI主机使用说明【把频率提高到16M】
SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。具体可咨询:http://www.syd-tek.com/
SYD8801 SPIM使用说明
这里使用SYD8801的SPI读取flash的ID,进行SPI的读写实例:
int main()
{
uint32_t id=0;
dbg_init();
spi_init();
spi_read(0X9F,(uint8_t *)&id,3);
dbg_printf("flash id:%x\r\n",id);
while(1)
{
delay_ms(500);
}
}
可以看到波形如下:
串口打印如下:
实物图连接如下:
最后上传本博客源代码:https://download.****.net/download/chengdong1314/10515384
把频率提高到16M
关于SPI的速度,SPI模块有分屏寄存器SPIM_SPEED:
SPIM_SPEED[2:0]:调整SPI时钟,SPIM_SPEED[2:0]的二分频系数,当SPIM_SPEED[2:0]为0时,SPI_CLK=2M;当SPIM_SPEED[2:0]不为0时,SPI_CLK=2M/(SPIM_SPEED[2:0]*2)
这里选择不分频,SPIM_SPEED传入0, 因为SPI的速度是MCU时钟的2分频,所以原则上SYD8801的SPI能够达到16M,因为SYD8801的MCU的频率最高是32M的。要SPI的速度达到16M那么就要做如下的设置:
1.在原来的基础上把SYD8801的协议栈的lib加入工程中:
2.在main函数的开始加上协议栈的初始化以及时钟的选择:
这时候看到的SPI波形如下:
这里上传本节博客工程:https://download.****.net/download/chengdong1314/10517370