找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 33988|回复: 14

[QCC3系列] qcc302x uart输出

[复制链接]
连续签到天数:1天
签到总天数:12天
签到总奖励:64金币
发表于 2020-7-20 11:38:45 | 显示全部楼层 |阅读模式
悬赏12金币已解决

  1. 在adk6.4 earbud 工程中 参考csr8675的uart 使用文档,添加了串口的初始化和发送函数,但是发送数据出不来,使用示波器测量输出io,没有波形输出,有没有大佬搞过这个,可以帮忙指点下,下边是实现代码
  2. <div></div><div>
  3. </div>
复制代码
初始化函数:
  1. void uart_and_region_data_stream_init(void)
  2. {
  3. PioCommonSetFunction(60,pin_function_uart_tx);
  4. PioCommonSetFunction(61,pin_function_uart_rx);
  5. PioCommonSetFunction(80,pin_function_uart_rts);
  6. PioCommonSetFunction(80,pin_function_uart_cts);
  7. /* Assign task message handler */
  8. theUARTStreamTask.task.handler = UARTStreamMessageHandler;
  9. //StreamConfigure(VM_STREAM_UART_CONFIG,VM_STREAM_UART_LATENCY);
  10. /* Configure uart settings */
  11. StreamUartConfigure(VM_UART_RATE_115K2, VM_UART_STOP_ONE, VM_UART_PARITY_NONE);
  12. /* Get the sink for the uart */
  13. theUARTStreamTask.uart_sink = StreamUartSink();
  14. PanicNull(theUARTStreamTask.uart_sink);
  15. /* Get the source for the uart */
  16. // theUARTStreamTask.uart_source = StreamUartSource();
  17. // PanicNull(theUARTStreamTask.uart_source);

  18. // PanicFalse(SinkConfigure(theUARTStreamTask.uart_sink,VM_SINK_MESSAGES,VM_MESSAGES_NONE));

  19. /* Register uart source with task */
  20. MessageStreamTaskFromSink( theUARTStreamTask.uart_sink,
  21. theUARTStreamTask.client);
  22. }
复制代码


发送函数:

  1. void uart_data_stream_tx_data(const uint8 *data, uint16 length)
  2. {
  3. uint16 offset = 0;
  4. uint8 *dest = NULL;
  5. /* Claim space in the sink, getting the offset to it */
  6. offset = SinkClaim(theUARTStreamTask.uart_sink, length);
  7. if(offset == 0xFFFF) Panic();
  8. /* Map the sink into memory space */
  9. dest = SinkMap(theUARTStreamTask.uart_sink);
  10. PanicNull(dest);
  11. /* Copy data into the claimed space */
  12. memcpy(dest, data, length);
  13. /* Flush the data out to the uart */
  14. /*PanicZero*/(SinkFlush(theUARTStreamTask.uart_sink, length));
  15. DEBUG_LOG("send success");
  16. }
复制代码




最佳答案

查看完整内容

给你个参考吧,头文件自己补全就行了。IO随便指定都可以,htf不需要配置
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:1天
签到总天数:1170天
签到总奖励:45846金币
发表于 2020-7-20 11:38:46 | 显示全部楼层
本帖最后由 basketcase 于 2020-9-8 01:01 编辑

给你个参考吧,头文件自己补全就行了。IO随便指定都可以,htf不需要配置

  1. /*! \brief UI task structure */
  2. typedef struct
  3. {
  4.     /*! The UART task */
  5.     TaskData     task;
  6.     /*! The UART task status */
  7.     bool            initialised;
  8.     /*! The UART Source */
  9.     Source        source;
  10.     /*! The UART Sink */
  11.     Sink            sink;
  12. }uartTaskData;
复制代码


  1. #define BOARD_UART_TX  0xa
  2. #define BOARD_UART_RX  0xb
  3. #define BOARD_UART_RTS 0x0
  4. #define BOARD_UART_CTS 0x0
复制代码
  1. void appUartSendToSink(const char *cmd)
  2. {
  3.     uint16 cmd_len = strlen(cmd);
  4.    
  5.     if(uartData.sink && (SinkSlack(uartData.sink)) >= cmd_len)
  6.     {
  7.         /* Claim space in the sink, getting the offset to it. */
  8.         uint16 offset = SinkClaim(uartData.sink, cmd_len);

  9.         /* Check we have a valid offset */
  10.         if (offset != 0xFFFF)
  11.         {
  12.             /* Map the sink into memory space. */
  13.             uint8 *snk = SinkMap(uartData.sink);
  14.             
  15.             if(snk == NULL)
  16.             {
  17.                 //DEBUG_LOG("Invalid Sink pointer");
  18.             }
  19.             (void) PanicNull(snk);

  20.             /* Copy the string into the claimed space. */
  21.             memcpy(snk+offset, cmd, cmd_len);
  22.             
  23.             /* Flush the data out to the UART. */
  24.             PanicZero(SinkFlush(uartData.sink, cmd_len));
  25.         }
  26.         else
  27.         {
  28.             //DEBUG_LOG("Invalid sink offset");
  29.         }
  30.     }
  31.     else
  32.     {
  33.         //DEBUG_LOG("Invalid UART Sink or Insufficient space in Sink");
  34.     }
  35. }
复制代码

  1. /*! UART Message Handler
  2.        Expecting MESSAGE_MORE_DATA for each AT command
  3. */   
  4. static void appUartHandler(Task task, MessageId id, Message msg)
  5. {
  6.     UNUSED(task);
  7.     UNUSED(msg);
  8.     switch (id)
  9.     {
  10.       case MESSAGE_MORE_DATA:
  11.       {
  12.       }
  13.       break;

  14.       default:
  15.           break;
  16.     }
  17. }
复制代码

  1. bool appUartInitConnection(void)
  2. {
  3.     /* Assign the appropriate PIOs to be used by UART. */
  4.     bool status = FALSE;
  5.     uint32 bank = 0;
  6.     uint32 mask = (1<<BOARD_UART_RTS) | (1<<BOARD_UART_CTS) | (1<<BOARD_UART_TX) | (1<<BOARD_UART_RX);

  7.     if (!uartData.initialised)
  8.     {
  9.         //DEBUG_LOG("appUartInitConnection start");
  10.         status = PioSetMapPins32Bank(bank, mask, 0);
  11.         PanicNotZero(status);
  12.         
  13.         PioSetFunction(BOARD_UART_RTS, UART_RTS);
  14.         PioSetFunction(BOARD_UART_CTS, UART_CTS);
  15.         PioSetFunction(BOARD_UART_TX, UART_TX);
  16.         PioSetFunction(BOARD_UART_RX, UART_RX);

  17.         StreamUartConfigure(VM_UART_RATE_1382K4, VM_UART_STOP_ONE, VM_UART_PARITY_NONE);

  18.         uartData.sink = StreamUartSink();
  19.         PanicNull(uartData.sink);
  20.         /* Configure the sink such that messages are not received */
  21.         SinkConfigure(uartData.sink, VM_SINK_MESSAGES, VM_MESSAGES_NONE);

  22.         uartData.source = StreamUartSource();
  23.         PanicNull(uartData.source);
  24.         /* Configure the source for getting all the messages */
  25.         SourceConfigure(uartData.source, VM_SOURCE_MESSAGES, VM_MESSAGES_ALL);

  26.         /* Associate the task with the stream source */
  27.         uartData.task.handler = appUartHandler;
  28.         MessageStreamTaskFromSink(StreamSinkFromSource(uartData.source), (Task) &uartData.task);
  29.         //DEBUG_LOG("appUartInitConnection end");

  30.         uartData.initialised=TRUE;
  31.     }
  32.     else
  33.     {
  34.         //DEBUG_LOG("UART Already Initialised");
  35.     }
  36.    
  37.     return uartData.initialised;
  38. }
复制代码

评分

参与人数 1金币 +10 收起 理由
.1111 + 10

查看全部评分

积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:122天
签到总奖励:1884金币
发表于 2020-7-20 13:31:03 | 显示全部楼层
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:2天
签到总天数:63天
签到总奖励:730金币
发表于 2020-7-20 13:53:22 | 显示全部楼层
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:12天
签到总奖励:64金币
 楼主| 发表于 2020-7-21 10:59:06 | 显示全部楼层
btdev 发表于 2020-7-20 13:31
参考这个试试:
http://www.52bluetooth.com/article-163-1.html

这个我也看过了,函数实现基本一致,但是现在串口数据就是出不来,不知道哪里有问题
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:12天
签到总奖励:64金币
 楼主| 发表于 2020-7-21 11:02:45 | 显示全部楼层
hyz_yongzhi 发表于 2020-7-20 13:53
参考这个试试:
https://blog.csdn.net/qq_29225913/article/details/102775806
https://blog.csdn.net/j ...

我现在函数实现和那些文档基本类似,编译都没问题,就是数据发不出来,不知道哪里少了某项配置还是,希望有个做过3020串口可以指点下
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:2天
签到总天数:63天
签到总奖励:730金币
发表于 2020-7-21 11:31:52 | 显示全部楼层
.1111 发表于 2020-7-21 11:02
我现在函数实现和那些文档基本类似,编译都没问题,就是数据发不出来,不知道哪里少了某项配置还是,希望 ...

IO脚 map了吗
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:12天
签到总奖励:64金币
 楼主| 发表于 2020-7-21 15:25:53 | 显示全部楼层

我在subsys0_config2.htf文件中使用UartPinsConfig = [80 80 3C 3D],以及在初始化函数中使用
  1. PioCommonSetFunction(60,pin_function_uart_tx);
  2.     PioCommonSetFunction(61,pin_function_uart_rx);
  3.     PioCommonSetFunction(80,pin_function_uart_rts);
  4.     PioCommonSetFunction(80,pin_function_uart_cts);
复制代码

不知道是不是还差哪个配置
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:79天
签到总奖励:563金币
发表于 2020-9-7 16:44:45 | 显示全部楼层
搞定没有?后面怎么解决, 我也卡在这里了 ,
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:12天
签到总奖励:64金币
 楼主| 发表于 2020-9-8 13:55:51 | 显示全部楼层
hzbesta 发表于 2020-9-7 16:44
搞定没有?后面怎么解决, 我也卡在这里了 ,

解决了,IO配置 不需要在配置文件配置,在初始化的时候使用
  1. pioSetMapPins32Bank(UART_BANK,UART_MASK,0);
  2. PioCommonSetFunction(pin,pin_function_uart_tx);
复制代码

这两个函数初始化和映射引脚就没问题
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-3-29 15:40 , Processed in 0.229920 second(s), 22 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表