完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 lee_st 于 2016-10-21 11:35 编辑
按项目的要求,在原有的基础上增加了定时器功能 仔细研究Datasheet中关于spi的部分 框图见附图 最大的频率只能到达MCK(系统主时钟的6分频),假如单片机主频MCK是120M,SPI的速率最大也就是20M。在SAM4中有3个SPI模块,分别是一个SPI,两个USART下的SPI模式,分别由USART0和USART1产生。 见附图 SPI的四种模式如下图:这四种模式选择要根据你所要通信的器件所支持的方式而选择。 见附图 代码分这几部走: (1)管脚的配置部分:把管脚设置为USART模式,代码如下: gpio_configure_pin(PIO_PA22_IDX,(PIO_PERIPH_A | PIO_DEFAULT)); gpio_configure_pin(PIO_PA23_IDX,(PIO_PERIPH_A | PIO_DEFAULT)); (2)USART_SPI的参数配置,代码如下: usart_spi_init(USART1);//初始化SPI,主要是使能USART的时钟 //设置SPI的传输数据的模式和频率,这里我设置到最大20M,单片机的主频为120M usart_spi_setup_device(USART1,&USART_SPI_DEVICE_EXAMPLE,SPI_MODE_0, 20000000, 0); usart_spi_enable(USART1);//使能SPI oled的底层SPI驱动的修改: 本项目的spi通讯有2个slave,eeprom和oled 分别通过2个片选控制。 代码如下: spi初始化 void spi_master_initialize(void) { // Configure an SPI peripheral. spi_enable_clock(SPI); spi_disable(SPI); spi_reset(SPI); spi_set_lastxfer(SPI); spi_set_master_mode(SPI); spi_disable_mode_fault_detect(SPI); spi_set_peripheral_chip_select_value(SPI, SPI_CHIP_SEL); spi_set_clock_polarity(SPI, SPI_CHIP_SEL, SPI_CLK_POLARITY); spi_set_clock_phase(SPI, SPI_CHIP_SEL, SPI_CLK_PHASE); spi_set_bits_per_transfer(SPI, SPI_CHIP_SEL, SPI_CSR_BITS_12_BIT); spi_set_baudrate_div(SPI, SPI_CHIP_SEL, 30); spi_set_transfer_delay(SPI, SPI_CHIP_SEL, SPI_DLYBS, SPI_DLYBCT); spi_set_clock_polarity(SPI, SPI_CHIP1_SEL, 0); spi_set_clock_phase(SPI, SPI_CHIP1_SEL, 1); spi_set_bits_per_transfer(SPI, SPI_CHIP1_SEL, SPI_CSR_BITS_8_BIT); spi_set_baudrate_div(SPI, SPI_CHIP1_SEL, 120); //EEPROM工作在1MHz spi_set_transfer_delay(SPI, SPI_CHIP1_SEL, SPI_DLYBS, SPI_DLYBCT); spi_enable(SPI); spi_set_peripheral_chip_select_value(SPI, SPI_CHIP_SEL); } void spi_read1(Spi *p_spi, uint16_t *spi_data) { static uint32_t reg_value; reg_value = p_spi->SPI_RDR; *spi_data = (uint16_t) (reg_value & SPI_RDR_RD_Msk); } void write_data(uint8_t int_dat) { uint16_t flag = 0x300; uint16_t switch_dat; switch_dat = flag + int_dat; switch_dat = switch_dat * 2; spi_master_transfer(&switch_dat,1); } 关于分别用在oled和eeprom,有时间整理一下再放上
|
|
相关推荐
|
|
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
464 浏览 0 评论
643 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
942 浏览 0 评论
1028 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
724 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12043 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 07:01 , Processed in 1.178370 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号