微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC254X新手问个问题:怎么修改HAL层代码

CC254X新手问个问题:怎么修改HAL层代码

时间:10-02 整理:3721RD 点击:
TI BLE开发包提供了HAL层的源代码,可是如果发现这些源代码需要根据具体应用做修改,比如我想采集芯片内的温度数据,我发现现有的Hal_Adc就不适合温度采集,需要添加功能。那我是直接修改TI提供的Hal_Adc源代码,还是另外自己写一个ADC代码文件。多谢了!

可以改HAL,但是最好不要这样做。自己可以做一部分,引用一下,会更容易。

谢谢fyaocn。刚才看了一下developer guide文档的chapter 6,说:When developing with a different hardware platform, you might need to modify the HAL source for compatablility.
我觉得TI给的HAL的介绍太少了,我是看过CC254X user guide文档很多遍的,转到BLE这边来就有些蒙了。

这个都不是问题吧
copy一个hal函数改一下或者直接放在app层
这样便于后期stack升级维护

怎么直接放在APP层呢?比如Hal_led中用了P1_0, P1_1, P1_4,我可能想用其他端口作为LED,而这几个端口用于其他目的,我应该怎么方便修改呢?那个Hal_key占用的端口就更多了,情况更复杂。
我真的很奇怪,TI的HAL层设计者是怎么考虑这个问题的?他不是想别人的硬件配置也跟他们的一样不变吧?

有bsp_board_cfg.h这种文件的
ti的是给你参考的,按照他的样子自己定义一套 这个是必须的
另外感觉你还不太熟悉这个东西哦,不好交流
hal可以理解为driver层 也是给你参考的,可以直接用也可以cpoy一份修改,看你用了
都可以的 不用纠结

多谢你的回复。我确实是不太熟悉BLE这一套东西,但我确实是看过了几遍CC254X芯片的user guide,对芯片的硬件有一定的了解,本以为需要自己控制IO, 写中断服务例程等等,结果仔细一看,发现站在OSAL上看底层硬件,隔了一层HAL,一个简单的Key控制都不知道在哪里开的中断,中断服务程序在哪里,还不如抛开hal,自己直接写底层的硬件程序,可问题是OSAL和HAL又纠缠在一起了,还甩不掉这个hal。比较郁闷,看来需要花时间把这个hal好好研究一下。

花点时间自己折腾一下 osal相关的还是用上吧,有必要
毕竟是sdk,比自己写裸机简单多了

花了2天看了HAL层的模块代码,确实存在我之前担心的问题,HAL层把硬件掩盖起来想把问题简化,但实际上却产生新的问题,举个简单的例子:假设你想用hal_key的同时又想用hal_uart_spi,你会发现不能用usart0做spi。如果不是对HAL底层很熟悉的话,你根本就会抓瞎了。如果是你从底层写代码的话,就不会存在这样的问题。
如果有人像我一样对HAL不熟悉,但对单片机硬件编程有一定经验的话(比如我之前写过msp430的硬件代码),一个建议就是在options中把不要的hal都关掉,比如hal_key,hal_led,hal_uart。然后自己写代码(中断什么的自己定,清清楚楚明明白白),需要应用层响应的,就直接给APP Task发送消息。
还请高手们多指教。

首先你得针对你的板子外设定义broad_bsp_cfg.h
具体可能不是这个名称,很久没弄了
如果不是系统的熟悉这个osal周边相关的话,确实有你说的问题
不过对于一般懂裸机的人也就一两天的时间,看看就熟悉了,没多少问题
总之,这个东西不是让你重复发明轮子的,慢慢的你会了解这个比你自己写方便
因为是sdk考虑到官方会迭代,得定期看官方得relase note,决定是否需要更新到最新的

还是花点时间理一下逻辑吧,定义好了不存在你说的外设冲突的

多说一句,这玩意外设很重要么
应该是stack本身更有必要去看看他的一些约定的东西,毕竟是调用api
只有遵守,否则很容易掉坑的,感觉外设根本不是事,还是你太新手了
做这行几年了

那个文件叫hal_board_cfg.h。硬件冲突的问题我尝试着慢慢摸索吧。

关于协议栈的部分,感觉东西不多,就那么几个套路:write, read, notification和indication。每个service照着官方文档实现好(很多TI都有现成的),应用层提供相应的回调函数和事件处理,基本应该没有问题。我现在尝试着自己定义一些service来实现我们自己的应用需要。

BLE协议说来说去都是比较固定的东西,而外设部分就会随着具体应用不同而不同,玩不转外设就谈不上应用了。

我本来是做手机开发和信号处理的。单片机去年才接触msp430,蓝牙BLE就没人懂,所以只好自己来填这个坑了。

多谢你的指点。能不能请你谈一谈蓝牙方面一些新的,以后值得花时间搞的东西。比如说我看市面上很多产品用的是德国的dialog芯片,这个你了解吗?

好的 , 只能简单说说我的一点认识,多交流下

dialog这个功耗很低,蛮多大厂再用的,带OTA区域要是量产产品很方便体积可以做的很小,基本上算是业界最小了,我了解过来的。前期开发需要加外部flash体积下不去。

nordic系列的基本上算是最容易上手的,功耗比dialog稍微高一点点,这两个都是m0内核的算是个趋势吧,ti现在出的2640也是同类系列的,相比2540而言无非是这个出来很久资料多市场占有会大一些。

很多后来者选型都很少选择2540这种老产品的,优势还是有的,stack经过市场验证,可惜内部资源确实够呛,原厂维护起来也有点吃力,新的stack都没法适应 4.0+。

NXP的QN系列算是收购来的,用的人不多。其他的厂家没有接触过不做评论了。

从我接触各个厂家的sdk来看,外设应该不是问题,stack坑还是有的,对于你以前搞手机开发应该接触上层的偏多,应该不是个问题。低层还是少接触好,太累(: 也没啥技术可言。

你的经验真丰富。再问两个问题:1、是不是只要是BLE,就是相互兼容的,比如4.0的手机和4.1的外设能连接和通信吗?2、你说stack有坑,能具体说一下有什么坑呢?你说做底层,不会是自己照着specification写stack吧?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top