566|0

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

芯海传感器信号调理CDS8712开发板 USART测试 [复制链接]

 

 

首先测试“CSD8712资料包\FW_CDS8712_V1.zip\FW_CDS8712_V1\FW_CDS8712”工程里包含的串口发送部分。

这个源码里只有使用printf的发送部分,没有接收的。但是“Chipsea.CDS871x_DFP.1.0.1”开发包里有。

源码不做修改编译后下载程序。

使用开发板的1PA11(RX)和PA10(TX)做为串口收发。

调试器是CMSIS-DAP Debugger。

 

运行后看到有数据输出

 

 

然后在看“Chipsea.CDS871x_DFP.1.0.1”开发包里的串口例程

打开“ \Chipsea.CDS871x_DFP.1.0.1\Chipsea.CDS871x_DFP.1.0.1\Boards\Usart\usart_interrupt “这个例程,

参照这个例程,我把串口部分移植到ADC测试例程(“CSD8712资料包\FW_CDS8712_V1.zip\FW_CDS8712_V1\FW_CDS8712”),

上面例程下载跑通后,使用串口助手发送数据,会收到返回的环回数据。

 

下面是异常现象(悲剧)开始了

之前没有直接下载“ \Chipsea.CDS871x_DFP.1.0.1\Chipsea.CDS871x_DFP.1.0.1\Boards\Usart\usart_interrupt “例程。

一直是在”CSD8712资料包\FW_CDS8712_V1.zip\FW_CDS8712_V1\FW_CDS8712”里折腾,没有什么问题

我想直接跑一下“usart_interrupt “例程,没想到下载后,识别不到SWD口了,换了J-LINK也不行,目前没找到恢复的办法。

 

 

下面是能正常测试串口时的代码。


static uint16_t recvData = 0;
static uint8_t recvFlag = 0;


VS_VOID Action_USART_Init (VS_VOID)
{
	
	
	nvic_config_t nvic_config; 

	/*串口初始化*/
	//usart_initiate();

	usart_config_t r_usart_config;

	/*使能串口时钟*///  
	rcc_apb_periph_clock_enable_ctrl(RCC_APBPeriph_USART,ENABLE);   

	/*波特率选择 */
	r_usart_config.usart_rate = 38400;	
	/*数据长度 */
	r_usart_config.data_width = USART_DATA_WIDTH_8;	
	/*校验使能 */
	r_usart_config.usart_parity = DISABLE;
	/*停止位 */
	r_usart_config.stop_bits = USART_STOP_BIT_1;	
	/*选择收发模式*/
	r_usart_config.usart_mode = USART_MODE_RX|USART_MODE_TX;

	/*串口初始化 */
	usart_init(&r_usart_config);	

//	/*复用PB4为RX */
//	gpio_mf_config(GPIO_GROUP_B,GPIO_PIN_NUM4,GPIO_MUX_FUNC_2);
//	/*复用PB5为TX */
//	gpio_mf_config(GPIO_GROUP_B,GPIO_PIN_NUM5,GPIO_MUX_FUNC_4);
	
	/*复用PA11为RX */
	gpio_mf_config(GPIO_GROUP_A,GPIO_PIN_NUM11,GPIO_MUX_FUNC_3);
	/*复用PA10为TX */
	gpio_mf_config(GPIO_GROUP_A,GPIO_PIN_NUM10,GPIO_MUX_FUNC_3);
	

	usart_direction_enable_ctrl(USART_MODE_RX|USART_MODE_TX,ENABLE);
	usart_enable_ctrl(ENABLE);
		
		

	/*串口中断配置*/
	usart_interrupt_config(USART_INT_RXNE, ENABLE);   
	/*USART中断优先级设置为0,即最高	*/
	/*定时器1中断使能*/
	nvic_config.nvic_channel_priority = 0x00;
	nvic_config.nvic_enable_flag = ENABLE;
	nvic_config.nvic_IRQ_channel = IRQn_USART;
	nvic_init(&nvic_config);
//	while(1)
//	{
//			if(recvFlag == 1)
//			{
//					usart_data_send(recvData);
//					recvFlag = 0;
//			}
//	}
}

VS_VOID Action_USART_RUN (VS_VOID)
{

	if(recvFlag == 1)
	{
		usart_data_send(recvData);
		recvFlag = 0;
	}
	SEQ_AddEvent(Event1);
	
}


/**
  * [url=home.php?mod=space&uid=159083]@brief[/url] USART中断服务函数
  */
void USART_IRQHandler(void)
{
    if(usart_flag_status_get(USART_FLAG_RXNE) != RESET)
    {
        
        recvData = usart_data_recv();
        //	printf("recvData=%x\r\n",recvData);
        recvFlag = 1;
    }
    usart_interrupt_flag_clear(USART_INT_RXNE);
    usart_flag_clear(USART_FLAG_OVRERRF);
}

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表