-
.BD1格式的pcb文件如何转换成主流EDA软件PCB格式 sos
.BD1格式的pcb文件,根据说明是使用ORCAD PCB Layout 386+完成的,求助如何转换成主流EDA软件PCB格式
3611浏览量 0回复量 关注量 -
直流屏充电器AD2203/s,有偿技术支持或资料。 赏1000家园币
直流屏充电器AD2203/s,有偿技术支持或资料。教我怎么维修就行,有图纸最好,没有图纸能说明白怎么测试i怎么维修也行。本人有电子电路基础。图片不会上传!@!!!!!!!!!!!! G M T Y [tr][td=10%][/td][td=20%][align=left][/td][td=3] [/align][/td][td=20%][align=left][/td][td=5%][/align][/td][td=8%][align=center] [/align][/td][td=8%][align=center] [/align][/td][td=8%][align=center] [/align][/td][td=8%][align=center] [/align][/td][td=15%][align=right] [/align][/td][/tr] 文本转语音功能仅限200个字符 [tr][td=5%][/td][td=5%][align=left] [/align][/td][td][align=center]选项 : 历史 : 反馈 : Donate[/align][/td][td=15%][align=right]关闭[/align][/td][/tr]
3053浏览量 1回复量 关注量 -
GD32F407 I2S 全双工,I2S_ADD 支持中断操作吗?
[i=s] 本帖最后由 onlysd 于 2024-8-30 16:12 编辑 [/i] 1、GD32F407,I2S 配置为全双工模式,其中 I2S_ADD 支持中断操作吗?? 2、如果能,I2S_ADD的中断函数入口是,SPI1_IRQHandler()吗?? 3、如果是,进入中断后,获取中断标志 & 获取数据的方式,如下对吗?! void SPI1_IRQHandler(void) { if(RESET != spi_i2s_interrupt_flag_get(I2S1_ADD, SPI_I2S_INT_RBNE)) { rt_uint16_t data; // read spi_data data = = spi_i2s_data_receive(I2S1_ADD); // new block send a event ? } }
1368浏览量 2回复量 关注量 -
GD32为什么用PA2代替key按键功能不成功
配置PA4 ADC引脚,将PA2代替key功能,一脚接地一脚接PA2,想实现在另一key按键控制oled屏同时(使用了PA1),如果杜邦线连接了地与PA2,可以在oled屏幕上显示读取的ADC值程序如下 运行无误但是PA2连接时无法实现预期功能,PA1正常运行 请大佬解答~谢谢 #include "gd32f30x.h" #include "systick.h" #include
#include "oled.h" extern uint8_t IntFlag;//进入中断服务程序标志,在EXTI1_IRQHandler()函数置位 // 定义一个变量来跟踪当前显示的行 static uint8_t currentLine = 0; // 定义一个数组来存储要显示的信息的索引或字符串指针 static const uint8_t chineseMessages[][2] = { {12, 0}, // {30, 1}, // {48, 2}, // {66, 3}, // {84, 4}, // {102, 5} // }; static uint8_t *englishMessages[] = { "HUZHOU", "TEL:12345678" }; uint16_t adc_value; uint16_t Vol_Value; float Vol_Value1; void adc_config(void) { /* reset ADC */ adc_deinit(ADC1); // /* ADC mode config */ adc_mode_config(ADC_MODE_FREE); /* ADC continous function enable */ adc_special_function_config(ADC1, ADC_CONTINUOUS_MODE, ENABLE); /* ADC data alignment config */ adc_data_alignment_config(ADC1, ADC_DATAALIGN_RIGHT); /* ADC resolusion 6B */ // adc_resolution_config(ADC1, ADC_RESOLUTION_6B); /* ADC channel length config */ adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, 1); /* ADC regular channel config */ adc_regular_channel_config(ADC1, 0, ADC_CHANNEL_4, ADC_SAMPLETIME_55POINT5); /* ADC trigger config */ adc_external_trigger_source_config(ADC1, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE); adc_external_trigger_config(ADC1, ADC_REGULAR_CHANNEL, ENABLE); /* enable ADC interface */ adc_enable(ADC1); delay_1ms(1); /* ADC calibration and reset calibration */ adc_calibration_enable(ADC1); /* enable ADC interface */ // adc_software_trigger_enable(ADC0,ADC_REGULAR_CHANNEL); } int main(void) { rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);//设置主频120M(#define __SYSTEM_CLOCK_120M_PLL_HXTAL (uint32_t)(120000000),8M外部晶振 (#define HXTAL_VALUE ((uint32_t)8000000)) systick_config();//1ms systick rcu_periph_clock_enable(RCU_AF); //AF时钟使能 delay_1ms(1000);//等待1000ms gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);//下载口NJTRST引脚当做普通I/O口 rcu_periph_clock_enable(RCU_GPIOB);//PB时钟使能 gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);//PB4配置成输出 //配置PA4 ADC引脚 rcu_periph_clock_enable(RCU_GPIOA); gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_4); /* enable ADC1 clock */ rcu_periph_clock_enable(RCU_ADC1); /* config ADC clock */ rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV8); //配置ADC adc_config(); adc_software_trigger_enable(ADC1, ADC_REGULAR_CHANNEL); OLED_Init();//OLED初始化 OLED_Clear();//OLED清屏 gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_1);//PA1配置成上拉输入 nvic_irq_enable(EXTI1_IRQn, 2U, 0U);//enable and set key EXTI interrupt to the lowest priority gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA, GPIO_PIN_SOURCE_1);//connect key EXTI line to key GPIO pin exti_init(EXTI_1, EXTI_INTERRUPT, EXTI_TRIG_FALLING);//下降沿中断 exti_interrupt_flag_clear(EXTI_1);//清中断标志 //PA2给ADC gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_2);//PA2配置成上拉输入 nvic_irq_enable(EXTI2_IRQn, 2U, 0U);//enable and set key EXTI interrupt to the lowest priority gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA, GPIO_PIN_SOURCE_2);//connect key EXTI line to key GPIO pin exti_init(EXTI_2, EXTI_INTERRUPT, EXTI_TRIG_FALLING);//下降沿中断 exti_interrupt_flag_clear(EXTI_2);//清中断标志 while (1) { if (gpio_input_bit_get(GPIOA, GPIO_PIN_2) == RESET && IntFlag == 0x55) //ADC显示电压 需要换个接口 { adc_flag_clear(ADC1,ADC_FLAG_EOC);//清ADC结束标志 while(SET != adc_flag_get(ADC1,ADC_FLAG_EOC)) {//判断是否结束 adc_value = ADC_RDATA(ADC1);//读取ADC寄存器值 Vol_Value=adc_value*3300/4095/1000;//寄存器值转换成电压值 //Vol_Value1=330; OLED_Clear();//OLED清屏 OLED_ShowNum(5,2,Vol_Value1,4,32); delay_1ms(1000); }//等待5秒 } if (gpio_input_bit_get(GPIOA, GPIO_PIN_1) == RESET && IntFlag == 0x55) //信息显示 { // 清除中断标志(重要,防止重复触发) IntFlag = 0; // 假设这是一个合适的清零操作 OLED_Clear(); gpio_bit_set(GPIOB, GPIO_PIN_4); // 根据currentLine的值显示相应的信息 if (currentLine < sizeof(chineseMessages) / sizeof(chineseMessages[0])) { OLED_ShowCHinese(chineseMessages[currentLine][0], 0, chineseMessages[currentLine][1]); } else if (currentLine >= sizeof(chineseMessages) / sizeof(chineseMessages[0]) && currentLine < sizeof(chineseMessages) / sizeof(chineseMessages[0]) + sizeof(englishMessages) / sizeof(englishMessages[0])) { if((currentLine - sizeof(chineseMessages) / sizeof(chineseMessages[0]))==0) { OLED_ShowCHinese(12,0,0);//显示中文(浙) OLED_ShowCHinese(30,0,1);//显示中文(江) OLED_ShowCHinese(48,0,2);//显示中文(力) OLED_ShowCHinese(66,0,3);//显示中文(控) OLED_ShowCHinese(84,0,4);//显示中文(科) OLED_ShowCHinese(102,0,5);//显示中文(技) OLED_ShowString(21, 3, englishMessages[currentLine - sizeof(chineseMessages) / sizeof(chineseMessages[0])]); } if((currentLine - sizeof(chineseMessages) / sizeof(chineseMessages[0]))==1) { OLED_ShowCHinese(12,0,0);//显示中文(浙) OLED_ShowCHinese(30,0,1);//显示中文(江) OLED_ShowCHinese(48,0,2);//显示中文(力) OLED_ShowCHinese(66,0,3);//显示中文(控) OLED_ShowCHinese(84,0,4);//显示中文(科) OLED_ShowCHinese(102,0,5);//显示中文(技) OLED_ShowString(21,3,(u8 *)"HUZHOU*ANJI");//显示字符 这里都是先列后行 OLED_ShowString(16, 6, englishMessages[currentLine - sizeof(chineseMessages) / sizeof(chineseMessages[0])]); } } delay_1ms(100); // 假设这里延迟1秒,以便观察显示结果 gpio_bit_reset(GPIOB, GPIO_PIN_4); // 更新currentLine以显示下一行(如果有的话) currentLine = (currentLine + 1) % (sizeof(chineseMessages) / sizeof(chineseMessages[0]) + sizeof(englishMessages) / sizeof(englishMessages[0])); } } } 4599浏览量 18回复量 关注量 -
gd32e230 IIC读数据问题
/* send the internal register address to */i2c_data_transmit(I2C0, read_address); /* wait until BTC bit is set */ while(!i2c_flag_get(I2C0, I2C_FLAG_BTC); [b][color=#800080]一直卡在上面[/color][/b] [b][color=#800080]请问什么原因?[/color][/b]
4244浏览量 17回复量 关注量 -
为什么AD5328没有输出电压
#ifndef __SPI1_H #define __SPI1_H #include "gd32f4xx.h" /* 时钟使能宏定义 */ #define SPIx SPI1 #define SPIx_CLK_ENABLE() rcu_periph_clock_enable(RCU_SPI1) #define SPIx_SCK_GPIO_CLK_ENABLE() rcu_periph_clock_enable(RCU_GPIOB) #define SPIx_MISO_GPIO_CLK_ENABLE() rcu_periph_clock_enable(RCU_GPIOB) #define SPIx_MOSI_GPIO_CLK_ENABLE() rcu_periph_clock_enable(RCU_GPIOB) #define SPIx_CS_GPIO_CLK_ENABLE() rcu_periph_clock_enable(RCU_GPIOB) #define LDAC_GPIO_CLK_ENABLE() rcu_periph_clock_enable(RCU_GPIOB) /* SPIx 引脚定义 */ #define SPIx_SCK_PIN GPIO_PIN_13 #define SPIx_SCK_GPIO_PORT GPIOB #define SPIx_MOSI_PIN GPIO_PIN_15 #define SPIx_MOSI_GPIO_PORT GPIOB #define AD5328_CS_PIN GPIO_PIN_12 #define AD5328_CS_GPIO_PORT GPIOB // AD5328 的 LDAC 引脚 #define AD5328_LDAC_PIN GPIO_PIN_14 #define AD5328_LDAC_GPIO_PORT GPIOB #define AD5328_LDAC_PIN GPIO_PIN_14 #define AD5328_LDAC_GPIO_PORT GPIOB #define digitalHi(p,i) {gpio_bit_set(p, i);} // 设置为高电平 #define digitalLo(p,i) {gpio_bit_reset(p, i);} // 设置为低电平 #define SPI_AD5328_CS_LOW() digitalLo(AD5328_CS_GPIO_PORT, AD5328_CS_PIN) #define SPI_AD5328_CS_HIGH() digitalHi(AD5328_CS_GPIO_PORT, AD5328_CS_PIN) #define AD5328_LDAC_LOW() digitalLo(AD5328_LDAC_GPIO_PORT, AD5328_LDAC_PIN) #define AD5328_LDAC_HIGH() digitalHi(AD5328_LDAC_GPIO_PORT, AD5328_LDAC_PIN) void SPI1_Init(void);//SPI1初始化 void Write_Byte(unsigned int Data);//SPI1写数据 void SPI1_Write_Data(unsigned char Channel,unsigned int Tdata);//写数据 void AD5328_Init(); //AD5328初始化 void SPWM_Out_DAValue(unsigned char Channel,unsigned int Dim_Vlaue); #endif /* __SPI1_H */ #include "gd32f4xx.h" #include "main.h" #include "systick.h" unsigned int RST = 0xE000; unsigned int Buff_SET = 0x8000; unsigned int POWER_DOWN = 0xC000; unsigned int LOCK_MODE_Updata = 0xA001; void AD5328_Init(void)//AD5328初始化 { Write_Byte(RST);//复位芯片 delay_1ms(1);//延时1ms Write_Byte(Buff_SET); //设置缓冲模式 Write_Byte(POWER_DOWN);//关闭功耗模式 Write_Byte(LOCK_MODE_Updata);//单次更新模式 } void SPI1_Init(void)//SPI1初始化 { spi_parameter_struct spi_init_struct;//SPI参数结构体 /* 使能外设和GPIO时钟 */ SPIx_SCK_GPIO_CLK_ENABLE(); SPIx_MOSI_GPIO_CLK_ENABLE(); SPIx_CS_GPIO_CLK_ENABLE(); SPIx_CLK_ENABLE(); LDAC_GPIO_CLK_ENABLE(); /* 配置 SPI SCK GPIO 引脚 */ gpio_mode_set(SPIx_SCK_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, SPIx_SCK_PIN); gpio_output_options_set(SPIx_SCK_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, SPIx_SCK_PIN); gpio_af_set(SPIx_SCK_GPIO_PORT, GPIO_AF_5, SPIx_SCK_PIN); // 设置为 AF5 用于 SPI1 /* 配置 SPI MOSI GPIO 引脚 */ gpio_mode_set(SPIx_MOSI_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, SPIx_MOSI_PIN); gpio_output_options_set(SPIx_MOSI_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, SPIx_MOSI_PIN); gpio_af_set(SPIx_MOSI_GPIO_PORT, GPIO_AF_5, SPIx_MOSI_PIN); // 设置为 AF5 用于 SPI1 /* 配置 CS 引脚 */ gpio_mode_set(AD5328_CS_GPIO_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, AD5328_CS_PIN); gpio_output_options_set(AD5328_CS_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, AD5328_CS_PIN); //gpio_af_set(AD5328_CS_GPIO_PORT, GPIO_AF_5, AD5328_CS_PIN); // 设置为 AF5 用于 SPI1 /* 配置 LDAC 引脚 */ gpio_mode_set(AD5328_LDAC_GPIO_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, AD5328_LDAC_PIN); gpio_output_options_set(AD5328_LDAC_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, AD5328_LDAC_PIN); /* SPI 配置 */ spi_init_struct.trans_mode = SPI_TRANSMODE_BDTRANSMIT;//半双工模式 spi_init_struct.device_mode = SPI_MASTER;//主机模式 spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;//8位帧 spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;//时钟极性低,第二个边沿采样 spi_init_struct.nss = SPI_NSS_SOFT;//软件控制NSS spi_init_struct.prescale = SPI_PSC_4;//预分频256 spi_init_struct.endian = SPI_ENDIAN_MSB;//高位在前 spi_init(SPIx, &spi_init_struct); // spi_bidirectional_line_config() spi_enable(SPIx); } unsigned char SPI_Buff[4] = {0}; void Write_Byte(unsigned int Data)//SPI1写数据 { SPI_AD5328_CS_LOW();//NSS拉低 SPI_Buff[0] = (unsigned char)(Data>>8); //高位 SPI_Buff[1] = (unsigned char)(Data);//低位 while (RESET == spi_i2s_flag_get(SPIx, SPI_FLAG_TBE));// 等待发送缓冲区空闲 spi_i2s_data_transmit(SPIx, SPI_Buff[0]); while (RESET == spi_i2s_flag_get(SPIx, SPI_FLAG_TBE));// 等待发送缓冲区空闲 spi_i2s_data_transmit(SPIx, SPI_Buff[1]); SPI_AD5328_CS_HIGH();//NSS拉高 } unsigned int sdata =0; void SPI1_Write_Data(unsigned char Channel,unsigned int Tdata)//写入数据 { SPI_AD5328_CS_LOW();//NSS拉低 sdata = (Channel<<12) | (Tdata & 0x0FFF);//设置数据位 sdata = sdata & 0x7FFF;//去掉最高位的1 SPI_Buff[0] = (unsigned char)(sdata>>8); //高位 SPI_Buff[1] = (unsigned char)(sdata);//低位 while (RESET == spi_i2s_flag_get(SPIx, SPI_FLAG_TBE));//等待空闲位 spi_i2s_data_transmit(SPIx, SPI_Buff[0]); while (RESET == spi_i2s_flag_get(SPIx, SPI_FLAG_TBE));//等待空闲位 spi_i2s_data_transmit(SPIx, SPI_Buff[1]); SPI_AD5328_CS_HIGH();//NSS拉高 } unsigned int REF_AD_Value = 0;//AD采样值 unsigned int DA_Value = 0;//DAC输出值 double FDA_Value = 0;//DAC输出值(浮点数) ///////////////////////////////// //Channel:通道选择,0~7 //Dim_Vlaue:亮度值,0~5000 //////////////////////////////// void SPWM_Out_DAValue(unsigned char Channel,unsigned int Dim_Vlaue)//SPWM输出DAC值 { if(Dim_Vlaue <= 4998)//0-5V { FDA_Value = (double)Dim_Vlaue/5000;//DAC输出值(浮点数) DA_Value = FDA_Value*4096;//DAC输出值(整数) }else { DA_Value = 4095;//最大值 } SPI1_Write_Data(Channel,Dim_Vlaue);//写入数据 }
1958浏览量 1回复量 关注量 -
VSCODE编译报错问题 sos
我原先用vscode的eide插件可以编译逻辑的国民芯片,现在我用env工具生成了rt-thread的项目用vscode编译失败,keil可以编译
2430浏览量 0回复量 关注量 -
IAP升级后,中断不能执行。中断向量设置无效
做一个项目,要求IAP远程升级,用bootloader写入BIN文件。 芯片WC32L083,目前写入后程序后,普通程序可以正常运行。但是有中断的程序就不执行。按IAP的教程设置中断向量的地址也没有效果。哪位可以指导一下。
2384浏览量 2回复量 关注量 -
请教大家:AD版本 8.3.0.16766 PCB一布线就出问题
[i=s] 本帖最后由 RAYINGPX 于 2024-5-29 17:39 编辑 [/i] AD PCB布线,手动布线和自动布线都不行,手动一点报错。打开其它的PCB文件再布线又可以,不知是哪里的问题,请教大家。关闭软件后再重新打开还是不行[url=/data/attachment/album/202405/29/173255nqemshrq5zmas3qq.png][img]/data/attachment/album/202405/29/173255nqemshrq5zmas3qq.png[/img][/url]规则中也检查了,没什么特别的设置。
2361浏览量 3回复量 关注量 -
mspg2553总中断问题
我刚刚开始学习单片机MSPG2553去图书馆借了几本书,我在对照范例写代码时用到 _EINT(); 就出错,发出警报。 使用环境为 IAR EW430 5.3 发出警报为: Warning[Pe223]: function "_EINT" declared implicitly F:\msp430-launchpad\频率\main.c 17 Error[e46]: Undefined external "_EINT" referred in main ( F:\msp430-launchpad\频率\Debug\Obj\main.r43 ) 这什么情况 _ENIT 未定义? 难道是头文件有缺失吗? (头文件未更改) 我该如何解决这个错误?
822浏览量 1回复量 关注量 -
麻烦问一下AD7608可以输出负电压吗?
[i=s] 本帖最后由 二木不是猫 于 2020-9-29 10:01 编辑 [/i] 看了几遍datasheet还是不太确定想要问一下ad7608可以输入输出负电压吗? 谢谢~ RAR/SER SEL--高电平 RANGE --高电平 REF_SEL--高电平 OS0--低电平 OS1--高电平 OS2--高电平 采样率选取的是:无过采样 时序图是按照这个区配的
2250浏览量 25回复量 关注量 -
电平转换芯片和数字ADU隔离芯片有哪些不一样的地方?他...
[size=14px]电平转换芯片和数字ADU隔离芯片有哪些不一样的地方?他们之间不都是防止电平不一样吗?[/size]
1278浏览量 4回复量 关注量