头像-8429

lixiang

  • 湖北省武汉市
  • 嵌入式
  • 消费电子

个人成就

获得 1 次赞

帮助过127人

求助一个关于电路共地的问题

小车由一个12V的锂电池供电。单片机由12V经过降压模块降到3.3V供电。电机直接由12V电池供电。4个电机启动,工作时电流都比较大,可能把降压模块的输入端的电压拉低,进而导致单片机不能正常工作。如果用一个电池需不需要将电机的地和单片机3.3v地隔离呢?

FPGA怎么调节蜂鸣器的音量高低啊?

FPGA怎么调节蜂鸣器的音量高低啊?

伺服器编码器的精度和分辨率会影响什么?

伺服器编码器的精度和分辨率会影响什么?

关于多路复用开关+ADC+串口的传输速度问题

本人有一个项目需要用到两个16路开关对传感器进行扫描,需要用到ADC然后通过串口发送。结果发现传送速度真的很慢,而且已经开启了DMA。求问大佬怎样才能提高传输速度#include "adc.h" #include "delay.h" #include "usart.h" #include "high.h" #include "DMA.h" extern __IO uint16_t ADC_ConvertedValue; u8 FSR_BUF[514];         // void control() // { //  vcc1_en=0; //        gnd1_en=0;   // }          int channel[16][4]= {   {0000}//channel 0   {1000}//channel 1         {0100}//channel 2         {1100}//channel 3         {0010}//channel 4         {1010}//channel 5         {0110}//channel 6         {1110}//channel 7         {0001}//channel 8         {1001}//channel 9         {0101}//channel 10         {1101}//channel 11         {0011}//channel 12         {1011}//channel 13         {0111}//channel 14         {1111} //channel 15 };   void getadc() {     volatile int k=1;           volatile int ijapm;           float temp;               FSR_BUF[0]=238;           FSR_BUF[513]=255;                            vcc1_en=0;                 gnd1_en=0;                           vcc2_en=1;                 gnd2_en=1;          for(i=0;i<16;i++)                 {                                   vcc1_s0=channel[i][0];              vcc1_s1=channel[i][1];              vcc1_s2=channel[i][2];              vcc1_s3=channel[i][3];                          for(j=0;j<16;j++)        {                                           gnd1_s0=channel[j][0];              gnd1_s1=channel[j][1];        gnd1_s2=channel[j][2];        gnd1_s3=channel[j][3];                          delay_ms(1);                          temp=(float) ADC_ConvertedValue*(3.3/4096);        p=-7.89551702691597*temp*temp*temp*temp*temp+84.1041604009715*temp*temp*temp*temp-378.645330958236*temp*temp*temp+937.394903665604*temp*temp-1350.80007444151 *temp+956.225199319509;                          if (p>250||p<=0)                           {                                         p=0;                                 }                                           FSR_BUF[k]=p;                                 k++;        }                  }                                 vcc1_en=1;                 gnd1_en=1;                           vcc2_en=0;                 gnd2_en=0;                  for(i=0;i<16;i++)                 {                                   vcc2_s0=channel[i][0];              vcc2_s1=channel[i][1];              vcc2_s2=channel[i][2];              vcc2_s3=channel[i][3];                                                  for(j=0;j<16;j++)        {                                           gnd2_s0=channel[j][0];              gnd2_s1=channel[j][1];        gnd2_s2=channel[j][2];        gnd2_s3=channel[j][3];                          delay_ms(1);                          temp=(float) ADC_ConvertedValue*(3.3/4096);        p=-7.89551702691597*temp*temp*temp*temp*temp+84.1041604009715*temp*temp*temp*temp-378.645330958236*temp*temp*temp+937.394903665604*temp*temp-1350.80007444151 *temp+956.225199319509;                          if (p>250||p<=0)                           {                                         p=0;                                 }                                                                                 FSR_BUF[k]=p;                          k++;        }                  }                                                 USART_DMACmd(USART1USART_DMAReq_TxENABLE);                 MYDMA_Enable(DMA1_Channel4); }                 int main(void)         {          delay_init();             //delay_ms(1);                //延时函数初始化                    uart_init(9600);                 //串口初始化为9600          ADC1_Init();                          //ADC初始化                    HIGH_Init();          //control();          MYDMA_Config(DMA1_Channel4(u32)&USART1->DR(u32)FSR_BUF514);//DMA1通道4外设为串口1存储器为SendBuff长(TEXT_LENTH+2)*100.          while(1)          {                  getadc();                 delay_ms(4);                                                                       }        } 复制代码

电机在通电后有什么办法锁住

因为项目需求,减速电机/步进电机在通电后需要不能用手去转动,需要将轴锁死(手不能拧动,因为电机驱动的东西力矩较长),请问有什么办法锁住吗?

可以分享一下你学FPGA的经历吗?

自学FPGA处处碰壁。当然时间长了,现在感觉好了一点。可是还是摸不到门路。学习的方法和设计的思路,都基本上是瞎子摸象,没有人带真的是很盲目。各位老司机,可以说一说你们是怎么学的吗?

STM32如何搭建Linux环境?

【节日专享】ESP8266、STM32小系统板等免费送!点击领取https://www.icxbk.com/ask/detail/31744.html在玩STM32的时候,我们习惯在Windows下使用Keil5IAR等集成开发环境,对里面的内部机制实现过程都不清楚。请教如何搭建Linux下的环境,可以适应任意开发板?

直流电机为什么不能测速 求大神解决

#include<reg51.h> sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; sbit motor1=P1^1; unsigned int speed; unsigned int value; unsigned int T; unsigned char code ZF[]=" Speed= ";   //8个字符 void INIT(); void INIT0(); void INIT1(); void Timer(); void Timer0(); void delay(unsigned t); void init_lcd(void); void writecom(unsigned char com); void writedate(unsigned char date); void motor(int speed); main() {     int i;         T=0;                 speed=0;         INIT();         Timer();         init_lcd();                         for(i=0;i<8;i++)                 {                         writedate(ZF[i]);                 }         while(1)         {                         if(k1==0)                  {                          delay(10);                         if(k1==0)                         {        int a;                                 motor1=0;                                 while((a<50)&&k1==0)                                 {                                         delay(10);                                         a++;                                 }                                 a=0;                         }                         motor(speed);                         writecom(0x88);                         writedate('1');                  }                  else                  {                          if(k2==0)                                                {                                 delay(10);                                 if(k2==0)                                 {        int b;                                         motor1=1;                                         while((b<50)&&k2==0)                                         {                                                 delay(10);                                                 b++;                                         }                                         b=0;                                 }                         }                         motor(speed);                         writecom(0x88);                         writedate('4');                                 }         } } void INIT()         //k2k3外部中断初始化 {         IT0=1;         EX0=1;         IT1=1;         EX1=1;         EA=0; } void INIT0()interrupt 0         //外部中断0服务函数 {         delay(10);         if(k3==0)         {                 speed++;         }        } void INIT1()interrupt 2//外部中断1服务函数 {         delay(10);         if(k4==0)         {                 if(speed>0)                 {                         speed--;                        }                 else                 speed=0;         } } void Timer()          //定时器初始化 {         TMOD=0x01;         TH0=0xfc;          //初值fc18---1ms         TL0=0x18;         EA=1;         ET0=1;         TR0=1; } void Timer0()interrupt 1        //定时器服务函数 {         TH0=0xfc;         TL0=0x18;         T++; } void delay(unsigned t)                //延时函数精确到ms {         if(T=t)         {                 while(--t);         }         T=0; }