微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540 串口问题

CC2540 串口问题

时间:10-02 整理:3721RD 点击:

我在做CC2540串口模块。苦于没有例程可参考,官网上的LPRF BLE SerialApp例程不知道原因,就是下载不下来。恳请技术支持能将这个例子发到我邮箱里,谢谢了。邮箱:51098525@163.com

hostestrelease的工程里如何选择CC2540EM?这个例程可以参考吗?我在这里边,找不到子函数haluartopen调用的地方,恳请解答

我也试着写U0DBUF = 0x55,但我看寄存器的值,一直都是0x00,就是没有变化。请问知道原因吗?

请看邮件.

hostTestreleae打开后请在workspace下拉菜单里面选择"CC2540EM", 不要选择默认的"CC2540USB" 或者其他

         邮件收到了,非常感谢您的帮助。

HI

     最近也是刚刚入门调试CC2540 MINI的套件,能把串口例程给我发一份吗?我下载了,但是解压缩失败。多谢啦!mininiu5216@126.com

thank you

已发送,希望可以在帖子里讨论,共同进步。

hi  你好

      我刚刚接触这开发板,还不是很明白。现在手里有一套CC2540mini套件:CC2540MINIDK_Dongle和CC2540MINIDK_EM,  不知道能够利用这两个进行串口调试?(真真的初级啊)

 谢谢    

用这两个进行串口调试有点困难, 只能引脚飞线

建议你搞一套smartRF05的板子, 叫做cc2540DK

hi  Yan  

      有个问题想请教一下啊?例如SerialAPP的例子。slave方使用GATT_Notification函数发送数据,master是通过何种方式怎样接收到的呢?

Hi,

在master接收端, 如果你用的是simpleBLECentral   如果用的不是这个, 是自己写的代码的话, 也是类似.

里面有比如simpleBLECentralProcessGATTMsg()函数, 就是在这里接收notification的.

但是实例代码里面没有加notification的内容, 你可以自己加, 

参考 else if ( pMsg->method == ATT_HANDLE_VALUE_IND )

把ATT_HANDLE_VALUE_IND 换成 ATT_HANDLE_VALUE_NOTI, 然后再加相应处理.

Hi

      我看代码simpleBLECentralProcessGATTMsg()函数是通过任务函数SimpleBLECentral_ProcessEvent()对SYS_EVENT_MSG事件进行处理的时候调用的。现在我对OSAL任务的生成理解的还不是很深刻。这样问一下:在slave方使用GATT_Notification函数发送数据后,master方怎样生成了一个任务,从而SimpleBLECentral_ProcessEvent()能够被执行?这里面的逻辑我还没转过来。

    针式非常感谢你的帮助!

HI

     在接收方我看有一个GATT_RegisterForInd的函数,通过注册该函数便能够接收到Indications/Notifications的消息。我的问题是是通过何种方式接受的?这里的处理方式是透明的么?一直没弄通……

      求解答!  多谢啦~~

Hi,yan

      有个问题需要您的帮助,我在使用CC250-UART时,有时会出现几个字节乱码的情况,经过测试发现:当BLE广播状态时会出现这个情况,而BLE未使能广播时则不会出现,BLE连接状态时也不会出现。请帮忙分析下为什么广播会影响到UART?

以下是在开发板上的试验情况(CC2540、BLE-CC254x-1.3、例子工程Simple BLE Peripheral):

1、在工程上做的修改,如附件截图。

1) Defined symbols中添加

HAL_UART

HAL_UART_ISR=0

HAL_UART_DMA=1

2) SBP_START_DEVICE_EVT 事件中添加open_UART 函数-->NPI_InitTransport( npiCBack_function )。

3) SBP_PERIODIC_EVT 改成用于周期发送UART数据NPI_WriteTransport( uint8 *buf, uint16 len ),“ABCDEF-0123456789-abcdef<--->fedcba-9876543210-FEDVBA”。

4) NPI_InitTransport( npiCBack_function )和  NPI_WriteTransport( uint8 *buf, uint16 len )两个函数在npi.c中 

2、试验结果:

1) 未广播时:CC2540发送13750字符,电脑串口调试工具接收13750字符,无乱码

2) 广播时:CC2540发送13750字符,电脑串口调试工具接收13769字符,出现一些字符乱码,比如:

ABCDEF-0123456789-abcdef<--->fedcba-9876543210-FEDVBA

ABCDEF-0123456789-abcdef<--->fedcba-9876543210-FE?5h忻酇BCDEF-0123456789-abcdef<--->fedcba-9876543210-FEDVBA

ABCDEF-0123456789-abcdef<--->fedcba-9876543210-FEDVBA

3) 连接时:CC2540发送13750字符,电脑串口调试工具接收13750字符,无乱码

 

3、此问题有跟Ti代理技术支持反馈过,他们在“Ti demo板+例程”上也能复现这个问题····

 

4、源代码_hal_uart_dma.c中HAL_UART_DMA_TX_AVAIL() 宏外面少了一对括号,有时候会导致HalUARTWriteDMA字符串丢失

   #define HAL_UART_DMA_TX_AVAIL() \
      (dmaCfg.txHead > dmaCfg.txTail) ? \
      (dmaCfg.txHead - dmaCfg.txTail - 1) : \
       (HAL_UART_DMA_TX_MAX - dmaCfg.txTail + dmaCfg.txHead - 1)

 

 

   HalUARTWriteDMA函数中:

   if (HAL_UART_DMA_TX_AVAIL() < len)
   {
      return 0;
   }

 

谢谢!

想问一下你,这个问题解决了吗?我也是刚遇到这个问题真是伤脑筋。我是连接的时候,也会出乱码

// Enable clock divide on halt
// This reduces active current while radio is active and CC254x MCU
// is halted
HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_divIDE_ON_HALT );

我是注释了这行,才可以的

hi

    请问能也给我发一份串口的demo么?谢谢..邮箱120992104@qq.com

还有就是想请问一下,我们老师让我们做的一个透传的app,用SimpleBLEPeripheral也能进行串口的传输么?

Hi ROSS ROSS

我刚刚开始做关于CC2540串口的模块,能否将Demo发给我一份?我用的也是MINIDK的板子。我的邮箱:robertyang@139.com

谢谢了

Hi Yan,

      能给我也发一份代码吗 谢谢

HI Yan,

  我在HostAppRelease中找不到 else if ( pMsg->method == ATT_HANDLE_VALUE_IND ),HostAppRelease是如何接收notification的消息。

感谢呀,串口正常了

你好,我想请问一下,你在发送13750个字节的数据的时候使用的是哪个函数接口。貌似GATT_WriteCharValue一次只能传20个字节的数据,而我使用GATT_WriteLongCharValue的时候目标设备最多只能接收到18个字节的数据。然后还有就是回传的时候GATT_Notification貌似也不能一次传送超过20个字节的数据。最近刚开始接触蓝牙和cc2540,若能解决不胜感激,谢谢!

请问,串口是如何正常的

hi:

能否给我发一份串口方面的资料,非常感谢。

源代码_hal_uart_dma.c中HAL_UART_DMA_TX_AVAIL() 宏外面少了一对括号,有时候会导致HalUARTWriteDMA字符串丢失

   #define HAL_UART_DMA_TX_AVAIL() \       (dmaCfg.txHead > dmaCfg.txTail) ? \       (dmaCfg.txHead - dmaCfg.txTail - 1) : \        (HAL_UART_DMA_TX_MAX - dmaCfg.txTail + dmaCfg.txHead - 1)

 

 

您能说括号怎么加吗,没试出来。您能说详细点吗?

请教大家个问题。

我的目标很简单,只是对串口收到的数据做个判断,我把串口收到的数据再发给PC也没问题。

但是第一个if语句能进去,第二个if语句进不去了。IAR仿真显示buf值是乱的。

原因我猜是没有接收完,我就进行判断处理了。应该怎么改呢?

想想应该是个很简单的功能,就是实现不了,请知道的解答下吧,在此谢过!

我也遇到了同样的问题

请问你现在解决了吗?

是如何解决的呢?可否交流,不胜感激!

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

网站地图

Top