Quantcast
Channel: Forums - Recent Threads
Viewing all 262198 articles
Browse latest View live

BQ2970: Li-pol protection circuit

$
0
0

Part Number:BQ2970

Hello!

I'm designing one cell Li-pol protection circuit based on BQ29707 IC. The schematic is similar to the datasheet example:

I need to limit currents of approximately 500 mA. So I've chosen CSD17381F4 FETs. This FET has Rdson=95 mOhm at Vgs = 3.5 V and T = 25°C. So in this case we have:

I = (90 mV) / (2 * 95 mOhm) = 473 mA.

Is this calculation correct? And are CSD17381F4 FETs a good choice for battery protection circuit?

Thank you in advance!


CCS/CC2640R2F: Help storing data in a buffer using ADCBuf

$
0
0

Part Number:CC2640R2F

Tool/software: Code Composer Studio

Hello, 

I am trying to store 2000 data points in a buffer collected at a 5.2Khz sampling rate. I modified the task in the Bluetooth Low Energy Sensor + Custom Profile tutorial. The task runs well alongside the project zero task when the Data Length and Task size are low, but after trying to increase the Task Size or Data Length the program stops booting up and I cannot see it advertising on my IOS device. 

P.S. I have manged to collect the buffer and transmit the data when I am collecting 100 samples, now I am trying to collect 2000 samples and it seems as if I will have to adjust the memory somehow. 

Linux/AM5708: Toggling GPIO in U-Boot

$
0
0

Part Number:AM5708

Tool/software: Linux

On my AM5708 based custom board, GPIO2-26 (H2) does not seem to toggle at all.

This is what's getting set at mux_data.h in U-Boot:

{GPMC_BEN0, (M14 | PIN_OUTPUT)},        /* gpmc_ben0.gpio2_26 */ 

Assuming GPIO2-26 is index 90 (2*32 + 26), I ran this:

=> setenv set-io 'gpio set 90'
=> run set-io
gpio: pin 90 (gpio 90) value is 1
=> gpio clear 90
gpio: pin 90 (gpio 90) value is 0
=> gpio set 90
gpio: pin 90 (gpio 90) value is 1

However my DMM only shows the pin at HIGH. Is index 90 correct?

I should note that there is a pull-up resistor of 4.7k ohm.

CCS/MSP430FR6972: Code protection on FR6972

$
0
0

Part Number:MSP430FR6972

Tool/software: Code Composer Studio

Dear Team

One of my customer has been working on MSP430FR6972 for different water-meter projects. They are having some questions regarding to the code protection on FR6972. They also want to get an example code for the code protection.  Could you please check below question and provide your feedback if possible?

We have some questions about CCS v8.0.0 and MSP430FR6972.

1- When JTAG password and IPE are enabled in the project, first programming attempt gives an error which is shown below. Second programming attempt is successful but next one fails again. As a result even number of programming attempts are successful. Why do odd number of programming attempts fail?

MSP430: File Loader: Verification failed: Values at address 0x04800 do not match Please verify target memory and memory map.
MSP430: GEL: File: C:\Users\...\Debug\project.out: a data verification error occurred, file load failed.

2- slaa685 says that vector table could be used as JTAG password. If we use JTAG password, which is longer than 30 word, an error, which is shown below, is given before reaching end of the vector table. Is there any document which shows maximum JTAG password length supported by MCUs?

MSP430: Error connecting to the target: Provided password exceeded the maximum length supported for the current device.

3- If length of JTAG password is 2 word, there is no problem in other words no need to change JTAG password in CCS. If length of JTAG password is 30 word, first programming attempt fails, second programming attempt is successful when password is deleted from CCS. Why should we write and delete JTAG password in CCS for each programming, if the length of JTAG password is 30 word?

4- If an IPE function is just called by non-IPE interrupt, where should be the function located, IPE function area or IPE interrupt area? In other words which below pragmas are correct? Additionally, if this IPE function has sub IPE function, is same pragma correct for it too?

#pragma CODE_SECTION(ipeFunctionJustCa

lledByNonIpeISR, ".ipe")
#pragma CODE_SECTION(ipeFunctionJustCalledByNonIpeISR, ".ipe:_isr")

#pragma CODE_SECTION(ipeFunctionJustCalledByIpeISR, ".ipe")
#pragma CODE_SECTION(ipeFunctionJustCalledByIpeISR, ".ipe:_isr")

5- Is it ok that all functions and all variables are in the IPE area? If yes, is there an option to tell that all project will be in IPE area instead of telling it for each functions and for each variables?

6- Why is "enable realtime mode" in passive, in other words why cannot we enable it in CCS v8.0.0 for MSP430FR6972? How can we debug a running device without resetting it?



We have some questions about static library project with using CCS v8.0.0 and MSP430FR6972.

1- IPE will be used in both static library project and main project. Should we enable IPE in the project properties for both static library project and main project or just for main project?

2- Does it matter to choose debug or release configuration and optimization level for static library project? In other words, does *.lib file use project properties of the main project?

3- Is there any document about static library project for MSP430 other than below wiki?
http://processors.wiki.ti.com/index.php/Creating_Library_for_MSP430_Project_using_CCS_v5#Creating_Static_Library_Code

 

Best regards

TMS320F28377D: TMS320F28377D: Uniflash422: Settings & Utilities: C28xx_CPU2: Verify Images >>> Error

BQ27750: Complete standalone I2C fuel gauge for single li-ion cell (PACK)

$
0
0

Part Number:BQ27750

Hello TI team,

we currently work on a new design of an industrial powerbank (PB) with fuel gauge with following configuration:

4x 18650 Li-Ion cell in parallel  (SAMSUNG, 3.6V, charge 4.2V nom,, 3350mAh/cell) >> total capacity 13.400 mAh

The PB should be w/o MCU. Therefore we are looking for: 

- a completely standalone fuel gauge that stores all the data about the cell - I guess some kind of NVRAM - so it minimizes the need for MCU initialization when you wanna read it out (MCU is situated outside the pack)

- fuel gauge that can calculate remaining time (time to full, time to empty) based on a current charging/discharging rate

- logs cell aging


Idea is to have a battery pack with integrated standalone charger (PB) with I2C fuel gauge that you can read out externally (when docked)  - MCU is on the docking station w/ graphic LCD => serves for analyzing powerbank state/condition.

Would you have a recommendation for the TI part? I used your selector and BQ27750 may be used but I prefer your advice. Can BQ27750 fulfill all our requested parameters? Does it contain internal NVRAM like BQ27411?

Thank you in advance.

With kind regards,

Daniel

CCS/CC3120: Integrating Multiple Threads With Local_ota HTTP Get Example

$
0
0

Part Number:CC3120

Tool/software: Code Composer Studio

Hi,

I'm using the CC3120 to transmit data from the MSP432P4111's ADC to a webpage using a variation on the local_ota example. I'm totally new to integrating a dev board with http, so I'm having some problems implementing my own code and the http routines together.

I've gotten just the base adcbuf.c driver working in this way, where the adcbuf routine runs in the background and the link_local_task can access its data when an HTTP Get request comes in. Now I'm trying to implement my own code that manipulates the adcbuf data. So far I can connect to the Wi-Fi and then either run my adc manipulation code, or the link_local_task that handles HTTP Get requests, but not both at the same time. My code won't run in the background alongside the adcbuf routine.

Any suggestions on how to achieve this? Am I just trying to do too much at once?

I'm including the main part of local_ota.c where I set the priorities for the different threads. My thread starts at the very bottom.

void * mainThread(void *arg)
{
    uint32_t RetVal;
    pthread_attr_t pAttrs;
    pthread_attr_t pAttrs_spawn;
    struct sched_param priParam;
    struct timespec ts = {0};

    Board_initGPIO();
    Board_initSPI();

    /* init Terminal, and print App name */
    InitTerm();
    /* initilize the realtime clock */
    clock_settime(CLOCK_REALTIME, &ts);

    DisplayBanner(APPLICATION_NAME, APPLICATION_VERSION);

    InitializeAppVariables();

    /* Switch off all LEDs on boards */
    GPIO_write(Board_LED0, Board_LED_OFF);
    GPIO_write(Board_LED1, Board_LED_OFF);
    GPIO_write(Board_LED2, Board_LED_OFF);

    /* initializes signals for all tasks */
    sem_init(&LocalOtaTask_ControlBlock.localOtaConnDoneSignal, 0, 0);
    sem_init(&LocalOtaTask_ControlBlock.localOtaConnDoneToOtaServerSignal, 0, 0);
    sem_init(&LinkLocal_ControlBlock.otaReportServerStartSignal, 0, 0);
    sem_init(&LinkLocal_ControlBlock.otaReportServerStopSignal, 0, 0);
    sem_init(&ADC_ControlBlock.httpWait, 0, 0);

    /* create the sl_Task */
    pthread_attr_init(&pAttrs_spawn);
    priParam.sched_priority = SPAWN_TASK_PRIORITY;
    RetVal = pthread_attr_setschedparam(&pAttrs_spawn, &priParam);
    RetVal |= pthread_attr_setstacksize(&pAttrs_spawn, TASK_STACK_SIZE);

    RetVal = pthread_create(&gSpawnThread, &pAttrs_spawn, sl_Task, NULL);

    if(RetVal)
    {
        while(1)
        {
            ;
        }
    }

    pthread_attr_init(&pAttrs);
    priParam.sched_priority = 3;
    RetVal = pthread_attr_setschedparam(&pAttrs, &priParam);
    RetVal |= pthread_attr_setstacksize(&pAttrs, TASK_STACK_SIZE);

    if(RetVal)
    {
        while(1)
        {
            ;        /* error handling */
        }
    }

    RetVal = pthread_create(&gLocalOtaThread, &pAttrs, localOtaTask, NULL);

    if(RetVal)
    {
        while(1)
        {
            ;
        }
    }

    pthread_attr_init(&pAttrs);
    priParam.sched_priority = 1;
    RetVal = pthread_attr_setschedparam(&pAttrs, &priParam);
    RetVal |= pthread_attr_setstacksize(&pAttrs, LINKLOCAL_STACK_SIZE);

    if(RetVal)
    {
        while(1)
        {
            ;        /* error handling */
        }
    }

    RetVal = pthread_create(&gLinklocalThread, &pAttrs, linkLocalTask, NULL);

    if(RetVal)
    {
        while(1)
        {
            ;
        }
    }

    pthread_attr_init(&pAttrs);
    priParam.sched_priority = 5;
    RetVal = pthread_attr_setschedparam(&pAttrs, &priParam);
    RetVal |= pthread_attr_setstacksize(&pAttrs, TASK_STACK_SIZE);

    if(RetVal)
    {
        while(1)
        {
            ;        /* error handling */
        }
    }

    RetVal = pthread_create(&gOtaReportServerThread, &pAttrs, otaReportServerTask,
                       NULL);

    if(RetVal)
    {
        while(1)
        {
            ;
        }
    }

    //This is where the thread for my code is created.
    
    pthread_attr_init(&pAttrs);
    priParam.sched_priority = 2;
    RetVal = pthread_attr_setschedparam(&pAttrs, &priParam);
    RetVal |= pthread_attr_setstacksize(&pAttrs, TASK_STACK_SIZE);

    if(RetVal)
    {
        while(1)
        {
            ;        /* error handling */
        }
    }

    RetVal = pthread_create(&gadcThread, &pAttrs, adcThread, NULL);

    if(RetVal)
    {
        while(1)
        {
            ;
        }
    }

    return(0);
}

Thanks,

-Daniel

CC3200MODLAUNCHXL: SPI + DMA Master maxes out at 3Mbps

$
0
0

Part Number:CC3200MODLAUNCHXL

Hello -

For some reason, I cannot go higher than 3Mbps on the SPI interface using DMA.  The CC3200 is set to master and is reading and writing to a memory block on a separate SPI slave device.  The way I am testing throughput is by writing to all the memory register on the SPI slave device then reading from the memory register and see how long that loop takes.  I am pretty sure I am using the DMA correctly from all the examples I've seen on this forum but the throughput I am getting is extremely low.  What am I doing wrong?

Attached is the code:

(Please visit the site to view this file)

Thanks


CCS/MSP432P401R: ADC On/Off Controlled by External Button Press and Timer A

$
0
0

Part Number:MSP432P401R

Tool/software: Code Composer Studio

I'm posting this as a related question because I accidentally clicked "This resolved my issue" on a comment on the other post when it did not actually resolve my issue.

While running the code below I get the following error:

#138 expression must be a modifiable value main.c /ADC_TEST line 77 C/C++ Problem

In reference to this line, where I am trying to turn the ADC off:

ADC14_CTL0_ENC = 0;   //turn off ADC

Furthermore, when I replace that instruction with a blinking LED (for debugging purposes) and then press the button I see one ADC value reported via UART and then the LED blinks continuously, regardless of how many additional times the button is pressed. Ideally, I want the ADC to turn on again when the button is pressed a second time. ANy help would be greatly appreciated.

/* Test ADC ON by external button and OFF by Timer A */

#include "msp.h"
#include "mytiming.h"

volatile unsigned int UART_flag = 0;
volatile unsigned int timer_flag = 0;
volatile unsigned int  button_flag = 0;
volatile unsigned int var = 0;
int millivolt = 0;

void UART0_init(void);
void delayMs(int n, int freq);
void setFreq(int freq);

int main(void) {

    setFreq(FREQ_3_MHZ);

    int mv_char_0 = 0;
    int mv_char_1 = 0;
    int mv_char_2 = 0;
    int mv_char_3 = 0;
    char uart_0;
    char uart_1;
    char uart_2;
    char uart_3;

    WDT_A->CTL = WDT_A_CTL_PW |             // Stop WDT
                 WDT_A_CTL_HOLD;

    // GPIO Setup
    P5->SEL1 |= BIT4;                       // Configure P5.4 for ADC
    P5->SEL0 |= BIT4;

    // Initialize Port 3 (button connections)
    P3->SEL0 = 0;  //clear register selection
    P3->SEL1 = 0;  //clear register selection
    P3->DIR = 0;
    P3->OUT = BIT0;
    P3->REN = BIT0;   //enable pull up resistor

    P3->IES = BIT0;  //interrupt on high-low transition
    P3->IFG = 0;     //clear any pending flags
    P3->IE = BIT0;   //enable port 3 interrupts

    UART0_init();

    // Enable global interrupt
    __enable_irq();

    // Enable ADC and Timer A0 interrupts in NVIC module
    NVIC_EnableIRQ(TA0_0_IRQn);
    NVIC_EnableIRQ(ADC14_IRQn);
    NVIC_EnableIRQ(PORT3_IRQn);

    // Sampling time, S&H=16, ADC14 on
    ADC14->CTL0 = ADC14_CTL0_SHT0_2 | ADC14_CTL0_SHP | ADC14_CTL0_ON;
    ADC14->CTL1 = ADC14_CTL1_RES_2;
    ADC14->MCTL[0] |= ADC14_MCTLN_INCH_1;   /* A1 ADC input select;
                                               Vref=AVCC */
    ADC14->IER0 |= ADC14_IER0_IE0;          /* Enable ADC conv
                                               complete interrupt */

    SCB->SCR &= ~SCB_SCR_SLEEPONEXIT_Msk;  /* Wake up on exit from
                                              ISR */

    while (1){
        if (button_flag){                      //button pushed, turn ADC on
            ADC14->CTL0 |= ADC14_CTL0_ENC | ADC14_CTL0_SC; //start sampling/conversion
            button_flag = 0;       //Reset flag
            P3->IFG = 0;           //clear any pending flags
            P3->IE |= BIT0;        //re-enable P3.0 interrupt
        }
        if (timer_flag){                      //time up, turn ADC off
            timer_flag = 0;
            ADC14_CTL0_ENC = 0;   //turn off ADC
        }
        if (UART_flag) {
            UART_flag = 0;
            millivolt = (int)((var + 1.46) / 1.2361);
            mv_char_3 = millivolt / 1000;
            mv_char_2 = millivolt / 100 - (mv_char_3 * 10);
            mv_char_1 = millivolt / 10 - (mv_char_3 * 100 + mv_char_2 * 10);
            mv_char_0 = millivolt - (mv_char_1 * 10 + mv_char_3 * 1000 + mv_char_2 * 100);
            uart_0 = (char) mv_char_0 + '0';
            uart_1 = (char) mv_char_1 + '0';
            uart_2 = (char) mv_char_2 + '0';
            uart_3 = (char) mv_char_3 + '0';
            while(!(EUSCI_A0->IFG & 0x02)) { }
            EUSCI_A0->TXBUF = uart_3;
            while(!(EUSCI_A0->IFG & 0x02)) { }
            EUSCI_A0->TXBUF = uart_2;
            while(!(EUSCI_A0->IFG & 0x02)) { }
            EUSCI_A0->TXBUF = uart_1;
            while(!(EUSCI_A0->IFG & 0x02)) { }
            EUSCI_A0->TXBUF = uart_0;
            while(!(EUSCI_A0->IFG & 0x02)) { }
            EUSCI_A0->TXBUF = 0x0D;
        }
    }
}

// ADC14 interrupt service routine
void ADC14_IRQHandler(void) {
    UART_flag = 1;
    var = ADC14->MEM[0];
}

//Timer A0 interrupt service routine
void TA0_0_IRQHandler(void){
    timer_flag = 1;         //flag when timer reaches value
    TA0CCTL0 &= ~CCIFG;     //clear pending interrupt flag
}

void PORT3_IRQHandler(void)       //Interrupt handler for P3.0
{
    button_flag = 1;              //Set flag to signal button press detected
    //configure Timer A0
    TA0CCR0 = 900000;             //Timer length = 300ms
    TA0CCTL0 |= CCIE;
    TA0CTL |= TASSEL_2 | MC_1;
    P3->IFG = 0;                  //Clear P3.0 pending interrupt flag
    P3->IE  &= ~BIT0;             //Disable interrupt for P3.0 for debouncing
}

void UART0_init(void)
{
    EUSCI_A0->CTLW0 |= 1;       // put in reset mode for config
    EUSCI_A0->MCTLW = 0;        // disable oversampling
    EUSCI_A0->CTLW0 = 0x0081;   /* 1 stop bit, no parity,SMCLK,byte
                                   data */
    EUSCI_A0->BRW = 26;         // 3,000,000 / 115200 = 26
    P1->SEL0 |= 0x0C;           // P1.3, P1.2 for UART
    P1->SEL1 &= ~0x0C;
    EUSCI_A0->CTLW0 &= ~1;      // take UART out of reset mode
}

UCC28780: Need help with Mathcad worksheets

$
0
0

Part Number:UCC28780

I am having trouble with calculations coming out wrong in the sluc644 Mathcad worksheets for this IC.  In another thread I was told that I should arbitrarily override a couple of the calculated variables.  This makes me really uncomfortable -- it means the worksheet calculations are wrong or incomplete, and I also don't know what the downstream effect would be of jamming in values in like this.

Can someone help me fix the worksheets so my ROPP no longer comes out negative?  I have been tracing back through the equations with no success.  The worksheets are a great help when they work, but when they don't it is really difficult to figure out where the problem lies.

I have made a number of changes to the worksheets and can provide my versions.  I have different operating conditions and components than the worksheets were originally written for.

TUSB522P: Swap SS Differential Pairs

$
0
0

Part Number:TUSB522P

Hi Team,

On the TUSB522P, is it acceptable to swap the SS differential pairs for ease of routing (i.e. TXP can be routed to TXN and RXN can be routed to RXP)?

I see mention of this in the SN65LVPE502A's datasheet layout guidelines but not in the TUSB522P.

Thanks,
Mitchell

LMK04610: Reload of saved register values does not generate the same output.

$
0
0

Part Number:LMK04610

I have a LMK04610 eval board and also a LMK04610 on my pcb.

After saving the register values for a particular output frequency set, the eval board and my board do not output the expected frequencies or most of the time ,  no output at all.

This happens using both the Tics pro on the eval board and a simple spi interface to my board.

I have hardware reset software reset , toggled startup bit.

the registers are stored  0x153 down to 0, in the data sheet it is recommended to go 0 to 0x153 , I haven't tried that yet.

???

Linux/IWR1642BOOST: ROS Point Cloud Visualizer Errors

$
0
0

Part Number:IWR1642BOOST

Tool/software: Linux

For the following system setup:

OS: Ubuntu 16.04
ROS: Kinetic Kame
Hardware: IWR1642BOOST
SDK: mmwave_sdk_01_01_00_02

I am getting errors ("<param> not recognized as CLI command") related to the following lines in the configuration file (/<ti_mmwave_ws>/src/ti_mmwave_rospkg/cfg/1642_2d.cfg) when trying to run: roslaunch ti_mmwave_rospkg rviz_1642_2d.launch

bpmCfg -1 0 0 1
lvdsStreamCfg -1 0 0 0
nearFieldCfg -1 0 0 0
CQRxSatMonitor 0 3 5 123 0
CQSigImgMonitor 0 127 4
analogMonitor 1 1

Running roslaunch ti_mmwave_rospkg rviz_1642_2d.launch with these configuration parameters commented out in 1642_2d.cfg seems to resolve these errors.

But I want to know if there is something that I’m missing that would allow ROS Point Cloud Visualizer to run without having to comment these lines out?

RM57L843: Maximum SPICLK rate

$
0
0

Part Number:RM57L843

Hello,

What is the max SPICLK rate on the RM57/TMS570LC4357? The data sheet states that SPICLK has a min time of 40ns (25MHZ), but I am successfully running at 26ns (37.5MHZ) is the data sheet wrong or is 37.5 out side the supported range and I could see data corruption? ( I haven't ).

Thanks!

DRV8846: DRV8846

$
0
0

Part Number:DRV8846

I connected a stepper motor and applied the control signals as below, The output at the stepper motor is measured constant as 1001. Is there any input parameter I am missing or wrong?

I1=0
I1=0
ADec=0
M0=0
M1=0
Dec0=0
Dec1=0

ENABLE=1
SLEEP=0
DIRCTION=0

loop
{
STEP=1
Delay
STEP=0
Delay
}

DIRCTION=1

loop
{
STEP=1
Delay
STEP=0
Delay
}


MSP430F6736: How to find MSP430f parts which best match my application

$
0
0

Part Number:MSP430F6736

I'm starting a design with the MSP430F6736. It looks like a great match for what is basically going to be a low power data acquisition system. The 6736 has a lot of literature that seems to indicate the chip lends itself best to sensing for smart meters. Even the EVM is for this application. I would like to look through TI's catalog of MSP430f devices to see if a different part matched my application more closely. Also, I'd like to find if the 6736 is one of the latest parts or if a new part number is soon going to supersede it.

Other than my concern that it is not the latest or the best suited part, it looks to be a fantastic processor.

Can anyone point me to a spot on the TI website where I can find the latest MSP430Fxxxx information?

Thanks!

Rich

TPS65642A: Question about Power -up Sequence VGHM is delayed to VGH, not same time

$
0
0

Part Number:TPS65642A

Hi Team, 

Customer experiments changing Capacitance value on VGH-VGHM, howerver no power up sequence changes. please advise me why this is no changes refer to the attachment.

Regards, Naoki yada

(Please visit the site to view this file)

Linux/AWR1443BOOST: Fail to install TI Cloud Agent on ARM

$
0
0

Part Number:AWR1443BOOST

Tool/software: Linux

Hello,

I tried to install TI Cloud Agent on ARM (aarch64), but failed with "./ticloudagent.run: 1: ./ticloudagent.run: Syntax error: Unterminated quoted string". 

Here is info of my system:

CPU: NVidia TX2 (ARM, 64bits)

OS: Ubuntu 16.04

Browser: Chromium Version 64.0.3282.167

What is the problem? Doesn't TI Cloud Agent work on ARM?

Thanks,

Tao Wang

TRS3122E: Serial Resistors Selection/Calculation for Rin

$
0
0

Part Number:TRS3122E

I have used a pair of the TRS3122E as the evaluation board and choose R6 and R7 with 50 Ohm.  During the common noise test - injecting 1000V, 100kHz signal into the GND of the TR3122E and the chassis ground, the communication is disrupted.  After change R6 and R7 back to 0 Ohm, the common mode noise immunity is much better.  Do you have any application note or suggestion on how to select the proper R6 and R7?  Or this is bus specific?  Is it possible to give an example on how to select the correct value for R6 and R7?  We could not even measure the waveform properly when common mode noise is being injected.

Thank you very much,

Frank W.

Linux/AWR1443: custom design of small size mmWave sensor with CAN bus for drone application

$
0
0

Part Number:AWR1443

Tool/software: Linux

Hello,

I played with AWR1443BOOST, we like it and would put AWR1443 or AWR1642 on our drone for detecting obstacles. I tried fishing line, which will be a dangerous stuff for our drone, it works!

We want to do custom design to make a small size mmWave sensor (AWR1443 or AWR1642) that work with CAN bus. Will TI do custom design? Our requirement is small size, CAN bus, work in Ubuntu with ROS (now the ROS driver seems only work with serial port). Do you have any guidance on custom design? Any recommendation of someone or some team that will do custom design?

Best Regards,

Tao Wang

Embedded Control Engineer

Automodality Inc.

Viewing all 262198 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>