美文网首页
在RT-Thread中使用SPI和UART设备

在RT-Thread中使用SPI和UART设备

作者: linanwx | 来源:发表于2017-03-07 17:41 被阅读0次

RT-Thread采用了类似于linux的函数调用方法,这里说明一下如何简单的使用设备。

  • 硬件环境 :STM32F103RBT6

用户程序位置

用户程序在bsp文件夹下面的applications中的applications.c中书写和调用,如果程序比较多,再新建一个c文件分离出去。

SPI 驱动文件

stm32f10x下面的drivers并没有spi驱动,我们需要将stm32f107对应的spi驱动移植过来。将rt_stm32f10x_spi.c,rt_stm32f10x_spi.h,以及platform.c文件复制过去,然后在rt_init_thread_entry函数中添加rt_platform_init();的调用,在对应文件中加入头文件。然后修改SConscript添加对platform.c,rt_stm32f10x_spi.c的编译,并在config中添加RT_USING_SPI和RT_USING_SPI1的宏定义

在platform.c中spi初始化加入如下代码,配置频率

        /* config spi */
        {
            struct rt_spi_configuration cfg;
            cfg.data_width = 8;
            cfg.mode = RT_SPI_MODE_3 | RT_SPI_MSB; /* SPI Compatible Modes 3 and SPI_FirstBit_MSB in lis302dl datasheet */
            
            //APB2=168M/2=84M, SPI1 = 84/2,4,8,16,32 = 42M, 21M, 10.5M, 5.25M, 2.625M ...
            cfg.max_hz = 2625000; /* SPI_BaudRatePrescaler_16=84000000/16=5.25MHz. The max_hz of lis302dl is 10MHz in datasheet */ 
            rt_spi_configure(&spi_device, &cfg);
        } /* config spi */  

硬件配置

硬件管脚被配置在platform.c文件中, 我们不修改默认的配置,也就是 PA4567这几个管脚为默认的spi输入输出管脚

/*
 * SPI1_MOSI: PA7
 * SPI1_MISO: PA6
 * SPI1_SCK : PA5
 *
 * CS0: PA4  SD card. 这里可以改成自己的spi设备的cs管脚
*/

SPI调用

SPI调用不用使用open函数,只需执行

    rt_spi_transfer(spi_device, &ReadAddr, &pBuffer, 1);

或者rt_spi_send_then_recv也可以实现不同的效果。

UART调用

UART调用需要使用open函数,这里给出一个简单的例子使用串口设备。

void device_thread_entry(void* parameter)
{
    rt_device_t device;
    device = rt_device_find("uart2");
    rt_device_open(device, RT_DEVICE_OFLAG_RDWR|RT_DEVICE_FLAG_INT_RX);
    char test[10] = "abc";
    while(1){
        rt_size_t reclen = rt_device_read(device, 0, test, 10);
        if(reclen > 0) rt_device_write(device, 0, test, reclen);
        rt_thread_delay(500);
    }
}

可以开启这个线程,我们在uart2中输入10个以内的字符,在5秒后就会回显。如果超过10个字符,应该会在下一次5秒显示。
在官方markdown文档中,使用了消息机制来处理UART通信,也可以参考。

相关文章

  • 在RT-Thread中使用SPI和UART设备

    RT-Thread采用了类似于linux的函数调用方法,这里说明一下如何简单的使用设备。 硬件环境 :STM32F...

  • 12.13

    今天上午老师讲了昨天留下的uart内容加上新内容 Python中SPI通信的使用 引脚: SPI(1):(NSS,...

  • 2017年12月13日学习总结

    今天上午老师j继续讲昨天留下的uart内容加上新内容 Python中SPI通信的使用 引脚: SPI(1):(NS...

  • STM32F103C8 Dual USB CDC

    不知道大家是否听说过MOXA这个品牌的多路串口设备,这个品牌在工业领域比较常见。 SPI转UART 理论上配合可以...

  • 12.13

    UART通信中硬件握手为先接收再发送至下一命令,接收数据更快更方便。SPI串行通信MASTER主设备、 SLAVE...

  • 全志R16_SPI总线驱动的使用手册

    介绍Linux 内核中SPI 子系统的接口及使用方法,为SPI设备驱动的开发提供参考。适用于基于Linux 3.4...

  • 2018-07-23~29周目标

    工作: 1.uart驱动代码走查。 2.SPI代码走查。 3.弄懂JFLASH使用方法:读完文档,原理验证。 4....

  • 单片机程序员的面试经验

    需要掌握哪些技能 ● 需要了解并使用过几款常见的单片机。● 需要熟悉常见的硬件接口譬如 UART 、SPI 、I...

  • 用Arduino玩ESP32(07):常用词汇释义

    SPI I2C(IIC) UART nodemcu-32s开发板的默认pin定义

  • 三种串行总线的区别

    SPI、I2C、UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral...

网友评论

      本文标题:在RT-Thread中使用SPI和UART设备

      本文链接:https://www.haomeiwen.com/subject/jxomgttx.html