蓝牙低功耗CC2640R2F+W5500SPI通信

news/2024/11/24 23:27:57/

CC2640R2F+W5500SPI通信(1)

使用的开发板是TI公司的蓝牙BLE CC2640R2F,主要研究的是CC2640R2F与以太网模块W5500的spi通信,使用的代码调试软件为CCS,
将原本在51单片机上运行的W5500例程,移植到CC2640R2F的开发板上,具体一直步骤如下:
(1)将w5500在51上的例程拷贝到CC2640R2F的驱动的uartecho目录下:
E:\ti\simplelink_cc2640r2_sdk_2_30_00_28\examples\rtos\CC2640R2_LAUNCHXL\drivers\uartecho

在这里插入图片描述
将51中的w5500 主程序主程序改为SPIW5500.c,不该的话将会在例程运行时与CC2640R2F运行的main_tirtos.c主程序发生冲突,导致程序运行不了。
(2)打开CC2640R2F的uartecho例程:
在这里插入图片描述
(3)将刚刚拷贝到CC2640R2F的驱动的uartecho目录下的w5500驱动函数库与main程序也就是SPIW5500和w5500.h添加到uartecho例程下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述一定要雨泽ECHLIPSE_HOME,
同样的操作将另两个程序添加到uartecho例程下:
在这里插入图片描述

点击运行例程我们会发现w5500的驱动函数库会报出很多的错误
在这里插入图片描述
在这里插入图片描述

#29 expected an expression
这个错误与CCS软件无关,是一种表达式错误,因为原本51的例程硬件连接不需要定义引脚的功能号,蓝牙C2640R2F需要定义引脚的功能号,这些引脚在协议中都有定义,我们只需将原本51中SPI对应的引脚换成CC2640R2F的spi引脚,在定义好他的功能号就好。
在这里插入图片描述
在w5500.h中将对应的引脚换成CC2640R2F的管脚号:
在这里插入图片描述
然后在驱动函数库中添加这些管脚的宏定义
在这里插入图片描述

在写管教的功能号之前一定要定义好管脚的输入输出功能:sclk;cs mosi,miso 的输入输出功能为输入定义为:
GPIO_setOutputEnableDio(IOID_10, GPIO_OUTPUT_ENABLE);
GPIO_setOutputEnableDio(IOID_20, GPIO_OUTPUT_ENABLE);
GPIO_setOutputEnableDio(IOID_9, GPIO_OUTPUT_ENABLE);
GPIO_setOutputEnableDio(IOID_8, GPIO_OUTPUT_DISABLE);
将原本在51中的时钟SCLK,使能CS,主机发送从机接收MOSI. 主机接收从机发送MISO 对应的功能语句改掉就可以了:

W5500_SCLK=0;改为 HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0) = (1<<10 );
W5500_SCLK=1;改为 HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0) = (1<<10 );
W5500_MOSI=0; 改为 HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0) = (1<<9 );
W5500_MOSI=1;改为 HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0) = (1<<9 );
W5500_SCS=0;改为 HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0) = (1<<20 );
W5500_SCS=1;改为 HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0) = (1<<20 );
W5500_RST=0;改为 HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0) = (1<<13 );
W5500_RST=1;改为 HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0) = (1<<13 );
在这里插入图片描述
在这里插入图片描述

注:
在这里插入图片描述
务必将此处的MISO
rByte<<=1;
rByte|=W5500_MISO;
改为宏之前定义中的RX接收语句:
rByte<<=1;
if( RX ) rByte |= 0x01;
在这里插入图片描述
最后将SPIW5500.C中的主函数int main(void)改为void *mainThread(void *arg0 )
再次点击运行程序完美运行,用逻辑分析仪进行抓包可以清楚地看到与51的抓包波形是一样的,因为51的板子上MISO引脚p3_4连接着时钟因此我们可以看到在逻辑分析仪上的MISO 波形,而CC2640R2F的MISO:IOID_8 与插针J2连接没有预期连接的芯片所以他不显示波形,只需将CC2640R2F与W5500对应引脚进行连接就可以看到MISO的波形了。
第一次写博客,写的不好望大家见谅。


http://www.ppmy.cn/news/287005.html

相关文章

W5500作为服务器突然断线

大家是否遇到过这样的问题&#xff0c;W5500作为服务器已经建立连接&#xff0c;突然网线掉了&#xff0c;然后再去连接W5500&#xff0c;就连不上了。为什么&#xff1f;下面对这个问题进行解释说明&#xff0c;并提出解决办法。 图1中的上位机程序作为客户端&#xff0c;连接…

STM32/TMS320F2812+W5500硬软件调试总结

使用STM32W5500方案是一种比较节省CPU开支的方案&#xff0c;无需多余的CPU资源管理Lwip协议。 调试的时候很多情况下无法通信&#xff0c;现结合笔者近10年的调试经验&#xff08;每次用W5500做板子&#xff0c;不会说是一帆风顺的- -&#xff09;&#xff0c;总结一下经常出…

基于STM32F407+W5500的freemodbus tcp移植与实现

环境&#xff1a;STM32CUBEMX6.6.1 MDK532 freemodbus1.6 首先是创建能驱动W5500的工程 主要用到硬件为SPI UART SPI速度建议不要太快&#xff0c;SPI1可以设置到40M&#xff0c;但是没必要这么快。 导出工程 添加fputc重定义 找到W5500官方例子 参考例程WIZnet W5500/W…

Stm32F407与W5500用DMA通信

详见 https://javakys.wordpress.com/2014/09/04/upgrade-w5500-throughput-on-nucleo-stm32f401re-using-spi-dma/

基于stm32f407下的W5500网卡驱动(上)

前段时间布置的任务是弄w5500的驱动&#xff0c;w5500本身硬件就具有tcp/ip协议&#xff0c;这样就省去了再把tcp协议栈移植到Uclinux的麻烦&#xff0c;而且我的存储空间一直是不够用的&#xff0c;所以选择w5500作为一个网卡来使用是再合适不过。 仔细看了一遍w5500的说明pdf…

W5500寄存器描述

4 寄存器描述 4.1 通用寄存器 MR (模式寄存器 - Mode Register) [R/W] [0x0000] [0x00]2 2 注脚符号 : 【可读/写】【内存地址】【默认值】 - [Read/Write] [Address] [Reset value] 该寄存器用于 S/W 复位&#xff0c;ping block模式和PPPoE模式。 表格 6 通用寄存器描述…

生信宝典文章集锦,一站式学习生信!众多干货,有趣有料

生信的作用越来越大&#xff0c;想学的人越来越多&#xff0c;不管是为了以后发展&#xff0c;还是为了解决眼下的问题。但生信学习不是一朝一夕就可以完成的事情&#xff0c;也许你可以很短时间学会一个交互式软件的操作&#xff0c;却不能看完程序教学视频后就直接写程序。也…

送书 | 知乎阅读300w+的生信学习指南(更新版)

先送书 在上周的留言送书活动中&#xff0c;恭喜下面这位读者获得书籍“Oracle高性能系统架构实战大全”&#xff0c;请及时与生信宝典编辑&#xff08;shengxinbaodian&#xff09;联系。 2020过去三分之一了&#xff0c;您年初定的小目标完成多少了呢&#xff1f;您又发生了哪…