TLC5947: TLC5947 XLAT Application Question
TMS320C6748: mcasp recording save in sdcard
Part Number:TMS320C6748
I am using TMS320C6748,CCS5, I can achieve with mcasp mic recordings saved in the sd card, but the headset has been dididi like the same sound as the noise, can not be eliminated, the sound saved in the audio also have this noise, I hope someone can help me, that will be very Thank you,the following is me Record the part of the code.
If i define BYTES_PER_SAMPLE * 2 , the noise will disappear,but the recorded audio talking speed will slow down。
#include <xdc/std.h> #include <ti/sysbios/BIOS.h> #include <ti/sysbios/io/iom.h> #include <ti/sysbios/knl/Semaphore.h> #include "ti/sysbios/knl/task.h" #include <ti/sysbios/hal/Hwi.h> #include <ti/sysbios/hal/Cache.h> #include <xdc/runtime/System.h> #include <xdc/runtime/Error.h> #include <xdc/runtime/Log.h> #include <string.h> #include <file.h> #include <stdio.h> #include <stdlib.h> #include "Mmcsd_evmInit.h" #include "psp_mmcsd.h" #include "psp_blkdev.h" #include "ti/sysbios/fatfs/ff.h" #include "ti/sysbios/fatfs/diskio.h" #include "lcdkC6748.h" #include "hw_types.h" #include "edma_event.h" #include "interrupt.h" #include "soc_C6748.h" #include "hw_syscfg0_C6748.h" #include "codecif.h" #include "mcasp.h" #include "edma.h" #include "psc.h" #include "uartStdio.h" #include "aic3106_init.h" #include "mcasp_init.h" #include "wav_audio.h" #include <string.h> /****************************************************************************/ /* */ /* 宏定义 */ /* */ /****************************************************************************/ // I2S 使用2个 slot #define I2S_SLOTS (2u) // 发送/接收 每个 slot 大小 #define SLOT_SIZE (16u) // 发送/接收数据 word 大小. Word size <= Slot size #define WORD_SIZE (16u) // 每个音频 buffer 采样点数 #define NUM_SAMPLES_PER_AUDIO_BUF (2000u) // 发送/接收 buffer 个数 #define NUM_BUF (3u) // 发送/接收使用链接 DMA 参数的个数 #define NUM_PAR (2u) // 指定链接参数器的起始 ID #define PAR_ID_START (40u) // loop brffer的采样点的个数 #define NUM_SAMPLES_LOOP_BUF (10u) // AIC3106 音频芯片的 I2C 从地址 #define I2C_SLAVE_CODEC_AIC31 (0x18u) // McASP 串行器通道,接收 #define MCASP_XSER_RX (14u) // McASP 串行器通道,发送 #define MCASP_XSER_TX (13u) //每个采样点的字节数 #define BYTES_PER_SAMPLE ((SLOT_SIZE >> 3)) #define AUDIO_BUF_SIZE (NUM_SAMPLES_PER_AUDIO_BUF \ * BYTES_PER_SAMPLE) #define TX_DMA_INT_ENABLE (EDMA3CC_OPT_TCC_SET(1) | (1 \ << EDMA3CC_OPT_TCINTEN_SHIFT)) #define RX_DMA_INT_ENABLE (EDMA3CC_OPT_TCC_SET(0) | (1 \ << EDMA3CC_OPT_TCINTEN_SHIFT)) #define PAR_RX_START (PAR_ID_START) #define PAR_TX_START (PAR_RX_START + NUM_PAR) // 一个 paRAM 的大小 #define SIZE_PARAMSET (32u) #define OPT_FIFO_WIDTH (0x01 << 8u) #define Error_Block xdc_runtime_Error_Block #define Error_init xdc_runtime_Error_init /****************************************************************************/ /* 全局变量 */ /****************************************************************************/ // 当接收通道还没有接收到数据时,发送通道会发送这个 buf 的数据 static unsigned char loopBuf[NUM_SAMPLES_LOOP_BUF * BYTES_PER_SAMPLE] = {0}; // 发送 buffer,如果要添加新的 buffer 需要更新 NUM_BUF 宏的值 static unsigned char txBuf0[AUDIO_BUF_SIZE]; static unsigned char txBuf1[AUDIO_BUF_SIZE]; static unsigned char txBuf2[AUDIO_BUF_SIZE]; // 接收 buffer,如果要添加新的 buffer 需要更新 NUM_BUF 宏的值 static unsigned char rxBuf0[AUDIO_BUF_SIZE]; static unsigned char rxBuf1[AUDIO_BUF_SIZE]; static unsigned char rxBuf2[AUDIO_BUF_SIZE]; // 下一个将要接收数据的 buffer static volatile unsigned int nxtBufToRcv = 0; // 最近收满数据的 buffer static volatile unsigned int lastFullRxBuf = 0; // paRAM ID 相对起始 paRAM 的偏移个数 static volatile unsigned short parOffRcvd = 0; // paRAM ID 相对起始 paRAM 的偏移个数 static volatile unsigned short parOffSent = 0; // 下一个将要发送的 paRAM ID 相对起始 paRAM 的偏移个数 static volatile unsigned short parOffTxToSend = 0; // 上一次发送的 buffer static volatile unsigned int lastSentTxBuf = NUM_BUF - 1; // 接收 buffer 指针数组 static unsigned int const rxBufPtr[NUM_BUF] = { (unsigned int) rxBuf0, (unsigned int) rxBuf1, (unsigned int) rxBuf2 }; // 发送 buffer 指针数组 static unsigned int const txBufPtr[NUM_BUF] = { (unsigned int) txBuf0, (unsigned int) txBuf1, (unsigned int) txBuf2 }; // 发送部分默认 paRAM 参数,这个参数将发送 loop buffer 的数据0 static struct EDMA3CCPaRAMEntry const txDefaultPar = { (unsigned int)(EDMA3CC_OPT_DAM | OPT_FIFO_WIDTH), // Opt (unsigned int)loopBuf, // 源地址 (unsigned short)(BYTES_PER_SAMPLE), // aCnt (unsigned short)(NUM_SAMPLES_LOOP_BUF), // bCnt (unsigned int) SOC_MCASP_0_DATA_REGS, // 目标地址 (short) (BYTES_PER_SAMPLE), // 源 bIdx (short)(0), // 目标 bIdx (unsigned short)(PAR_TX_START * SIZE_PARAMSET), // 链接地址 (unsigned short)(0), // bCnt 重装值 (short)(0), // 源 cIdx (short)(0), // 目标 cIdx (unsigned short)1 // cCnt }; // 接收部分默认 paRAM 参数 static struct EDMA3CCPaRAMEntry const rxDefaultPar = { (unsigned int)(EDMA3CC_OPT_SAM | OPT_FIFO_WIDTH), // Opt 设置源地址为FIFO模式,FIFO的大小为32-bit (unsigned int)SOC_MCASP_0_DATA_REGS, // 源地址 MCASP 通过DMA访问的数据寄存器地址 (unsigned short)(BYTES_PER_SAMPLE), // aCnt 每个sample占用2个字节 (unsigned short)(1), // bCnt 一行有1个元素 (unsigned int)rxBuf0, // 目标地址 (short) (0), // 源 bIdx (short)(BYTES_PER_SAMPLE), // 目标 bIdx 目标索引2个字节 (unsigned short)(PAR_RX_START * SIZE_PARAMSET), // 链接地址 到第40个 paRAM (unsigned short)(0), // bCnt 重装值 (short)(0), // 源 cIdx (short)(0), // 目标 cIdx (unsigned short)1 // cCnt }; /****************************************************************************/ /* */ /* 函数声明 */ /* */ /****************************************************************************/ static void ParamTxLoopJobSet(unsigned short parId); static void I2SDMAParamInit(void); static void InitAIC31I2S(void); static void EDMA3IntSetup(unsigned int cpuINT); void BufferTxDMAActivate(unsigned int txBuf, unsigned short numSamples, unsigned short parId, unsigned short linkPar); static void BufferRxDMAActivate(unsigned int rxBuf, unsigned short parId, unsigned short parLink); static void McASPRxDMAComplHandler(void); static void McASPTxDMAComplHandler(void); void EDMA3CCComplIsr(UArg arg); // DSP 中断初始化 static void InitMcaspEdma(void); /****************************************************************************/ /* */ /* 主函数 */ /* */ /****************************************************************************/ // 保存 30s 的音频数据 #define sound_size (48000*2*30) Void AudioSaveTask(Void) { unsigned short parToSend; unsigned short parToLink; short *pSound, *sound_buffer; UARTPuts("\r\n ============Test Start===========.\r\n", -1); UARTPuts("Welcome to sysbios AudioLineInSave Demo application.\r\n\r\n", -1); UARTPuts("This application loops back the input at MIC_IN of the EVM to the LINE_OUT of the EVM,\r\n" "and saves 30s data into the SD Card.\r\n\r\n", -1); // I2C 模块引脚配置 I2CPinMuxSetup(0); // McASP 引脚配置 McASPPinMuxSetup(); // 使能 EDMA3 PSC PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_CC0, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_TC0, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); // 初始化 I2C 接口地址为 AIC31 的地址 I2CSetup(SOC_I2C_0_REGS, I2C_SLAVE_CODEC_AIC31); I2CIntRegister(C674X_MASK_INT11, SYS_INT_I2C0_INT); // 初始化 AIC31 音频芯片 InitAIC31I2S(); // 初始化 McASP 为 EDMA 方式 InitMcaspEdma(); // 主循环,当一个新的 buffer 接收完成后,lastFullRxBuf 将会在接收完成中断 // 里更新。如果 lastFullRxBuf 与 lastSentTxBuf 不相等就会发送新的数据,并且保存数据。 sound_buffer = (short *)malloc(sound_size*2); pSound = sound_buffer; while(1) { if(lastFullRxBuf != lastSentTxBuf) { // 标志将要设置的下一个要传输数据的链接 DAM 参数 parToSend = PAR_TX_START + (parOffTxToSend % NUM_PAR); parOffTxToSend = (parOffTxToSend + 1) % NUM_PAR; parToLink = PAR_TX_START + parOffTxToSend; lastSentTxBuf = (lastSentTxBuf + 1) % NUM_BUF; Cache_inv((void *)rxBufPtr[lastFullRxBuf], AUDIO_BUF_SIZE, Cache_Type_ALLD, TRUE); // 复制 buffer memcpy((void *)txBufPtr[lastSentTxBuf], (void *)rxBufPtr[lastFullRxBuf], AUDIO_BUF_SIZE); Cache_wb((void *)txBufPtr[lastSentTxBuf], AUDIO_BUF_SIZE, Cache_Type_ALLD, TRUE); // 设置相应的 DMA 参数用于发送数据 BufferTxDMAActivate(lastSentTxBuf, NUM_SAMPLES_PER_AUDIO_BUF, (unsigned short)parToSend, (unsigned short)parToLink); // 保存音频数据 memcpy((void *)pSound, (void *)rxBufPtr[lastFullRxBuf], AUDIO_BUF_SIZE); pSound = (short *)((int)pSound + AUDIO_BUF_SIZE); // 将声音以 wav 格式保存到 SD 卡 if((pSound - sound_buffer) >= sound_size) { pSound = sound_buffer; wavAudio wavMusic; strcpy(wavMusic.fiff.szRiffID, "RIFF"); wavMusic.fiff.dwRiffSize = sound_size * 2 + 36; strcpy(wavMusic.fiff.szRiffFormat, "WAVE"); strcpy(wavMusic.fmt.szFmtID, "fmt "); wavMusic.fmt.dwFmtSize = 16; wavMusic.fmt.wFormatTag = 1; wavMusic.fmt.wChannels = 2; wavMusic.fmt.dwSamplesPerSec = 48000; wavMusic.fmt.dwAvgBytesPerSec = 2 * 48000 * 16 / 8; wavMusic.fmt.wBlockAlign = 2 * 16 / 8; wavMusic.fmt.wBitsPerSample = 16; strcpy(wavMusic.data.szDataID, "data"); wavMusic.data.dwDataSize = sound_size * 2; wavMusic.data.bufData = (unsigned char*)sound_buffer; SaveWav("fat:0:test.wav", &wavMusic); asm(" SWBP 0 "); } } } } /****************************************************************************/ /* */ /* 初始化 McASP 为 EDMA 方式 */ /* */ /****************************************************************************/ static void InitMcaspEdma(void) { EDMA3Init(SOC_EDMA30CC_0_REGS, 0); EDMA3IntSetup(C674X_MASK_INT4); // 申请 EDMA 通道,通道 0 用于接收,通道 1 用于发送 EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_MCASP0_TX, EDMA3_CHA_MCASP0_TX, 0); EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_MCASP0_RX, EDMA3_CHA_MCASP0_RX, 0); // 初始化 DMA 参数 I2SDMAParamInit(); // 初始化 McASP 为 I2S 模式 McASPI2SConfigure(MCASP_BOTH_MODE, WORD_SIZE, SLOT_SIZE, I2S_SLOTS, MCASP_MODE_DMA); // 使能 EDMA 传输 EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX, EDMA3_TRIG_MODE_EVENT); EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT); // 启动 McASP 发送和接收 I2SDataTxRxActivate(MCASP_BOTH_MODE); } /****************************************************************************/ /* */ /* 设置 EDMA 循环工作参数 */ /* */ /****************************************************************************/ static void ParamTxLoopJobSet(unsigned short parId) { EDMA3CCPaRAMEntry paramSet; memcpy(¶mSet, &txDefaultPar, SIZE_PARAMSET - 2); // 要链接的下一个 EDMA paRAM 参数通道 paramSet.linkAddr = parId * SIZE_PARAMSET; EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, parId, ¶mSet); } /****************************************************************************/ /* */ /* 初始化 DMA 参数 */ /* */ /****************************************************************************/ // 接收的基本 paRAM 为通道0,发送的基本 paRAM 为通道1 // // 接收 paRAM 0 将会初始化为接收数据到 rxBuf0,第一次初始化时只接收1个采样点。 // paRAM 0 没有使能传输完成中断,paRAM 0 传输完成后直接链接 paRAM 40 (PAR_RX_START) // 链接 paRAM 参数后会继续下一个传输。 // 例如:PAR_RX_START = 40, 使用两个 paRAM = 2,则接收部分的 paRAM 链接将会 // 被初始为 0-->40-->41-->40 // // 发送 paRAM 将会初始化为发送 loop buffer 的数据,这个数据的值为0(由于刚开始 // 还没收到数据,因此发送0数据) // paRAM 1 将会链接 paRAM 42(PAR_TX_START),所以其他的 paRAM 参数将会链接到 // 自己,使发送数据的 EDMA 传输不会被中断传输。 // 例如:PAR_TX_START = 42, 使用两个 paRAM = 2,则接收部分的 paRAM 链接将会 // 被初始为 1-->42-->42, 43->43. // // 当接收buffer (rxBuf0)接收到数据时,将会在主循环里设置发送部分为pingpong // 模式,其工作模式为 42-->43-->42-->43....... static void I2SDMAParamInit(void) { EDMA3CCPaRAMEntry paramSet; int idx; // 初始化第0通道的 paRAM 用于接收,这个通道只设置接收一个采样点, // 接收完成后不产生中断,直接链接到 PAR_RX_START 通道 memcpy(¶mSet, &rxDefaultPar, SIZE_PARAMSET - 2); EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX, ¶mSet); // 初始化两个通道的 paRAM 参数,pingpong传输,这两个通道使能了中断 paramSet.opt |= RX_DMA_INT_ENABLE; for(idx = 0 ; idx < NUM_PAR; idx++) { paramSet.destAddr = rxBufPtr[idx]; paramSet.linkAddr = (PAR_RX_START + ((idx + 1) % NUM_PAR)) * (SIZE_PARAMSET); paramSet.bCnt = NUM_SAMPLES_PER_AUDIO_BUF; // 第一次传输时,由于通道0已经接收了一个采样点的数据存储在buffer0 // 里,因此这次接收从第二个采样点开始接收,数据存储于 buffer0 if( 0 == idx) { paramSet.destAddr += BYTES_PER_SAMPLE; paramSet.bCnt -= 1; } EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, (PAR_RX_START + idx), ¶mSet); } // 初始化接收部分需要的参数 nxtBufToRcv = idx % NUM_BUF; lastFullRxBuf = NUM_BUF - 1; parOffRcvd = 0; // 初始化第一通道的 paRAM 用于发送 memcpy(¶mSet, &txDefaultPar, SIZE_PARAMSET); EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_TX, ¶mSet); // 使能 EDMA 循环工作 for(idx = 0 ; idx < NUM_PAR; idx++) { ParamTxLoopJobSet(PAR_TX_START + idx); } // 初始化发送需要的参数 parOffSent = 0; lastSentTxBuf = NUM_BUF - 1; } /****************************************************************************/ /* */ /* 初始化 AIC31 音频芯片 */ /* */ /****************************************************************************/ static void InitAIC31I2S(void) { volatile unsigned int delay = 0xFFF; // 复位 AIC31Reset(SOC_I2C_0_REGS); while(delay--); // 初始化 AIC31 为 I2S 模式 AIC31DataConfig(SOC_I2C_0_REGS, AIC31_DATATYPE_I2S, SLOT_SIZE, 0); // 初始化采样率为 48000Hz AIC31SampleRateConfig(SOC_I2C_0_REGS, AIC31_MODE_BOTH, FS_48000_HZ); // 初始化 ADC 0分贝增益,连接 MIC IN AIC31ADCInit(SOC_I2C_0_REGS, ADC_GAIN_0DB, AIC31_MIC_IN); // 初始化 DAC 0分贝衰减 AIC31DACInit(SOC_I2C_0_REGS, DAC_ATTEN_0DB); } /****************************************************************************/ /* */ /* 初始化 EDMA 中断 */ /* */ /****************************************************************************/ static void EDMA3IntSetup(unsigned int cpuINT) { // 动态创建硬件中断 Hwi_Handle hwi; Hwi_Params hwiParams; Error_Block eb; Error_init(&eb); // 使用默认值初始化参数 Hwi_Params_init(&hwiParams); // 中断事件 hwiParams.eventId = SYS_INT_EDMA3_0_CC0_INT1; // 传递到中断服务函数的参数 hwiParams.arg = 1; // 不允许该中断自身嵌套 // hwiParams.maskSetting = Hwi_MaskingOption_SELF; // 使能中断 hwiParams.enableInt = true; // 可屏蔽中断 5 // 中断服务函数 hwiMain hwi = Hwi_create(cpuINT, EDMA3CCComplIsr, &hwiParams, &eb); if (hwi == NULL) System_abort("I2C hwi create failed"); Hwi_enableInterrupt(cpuINT); } /****************************************************************************/ /* */ /* 激活 DMA 传输器的一个参数,用于发送给定的buffer */ /* */ /****************************************************************************/ void BufferTxDMAActivate(unsigned int txBuf, unsigned short numSamples, unsigned short parId, unsigned short linkPar) { EDMA3CCPaRAMEntry paramSet; // 复制默认参数 memcpy(¶mSet, &txDefaultPar, SIZE_PARAMSET - 2); // 使能传输完成中断 paramSet.opt |= TX_DMA_INT_ENABLE; paramSet.srcAddr = txBufPtr[txBuf]; paramSet.linkAddr = linkPar * SIZE_PARAMSET; paramSet.bCnt = numSamples; EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, parId, ¶mSet); } /****************************************************************************/ /* */ /* 激活 DMA 传输器的一个参数,用于接收数据到给定的buffer */ /* */ /****************************************************************************/ static void BufferRxDMAActivate(unsigned int rxBuf, unsigned short parId, unsigned short parLink) { EDMA3CCPaRAMEntry paramSet; // 复制默认参数 memcpy(¶mSet, &rxDefaultPar, SIZE_PARAMSET - 2); // 使能传输完成中断 paramSet.opt |= RX_DMA_INT_ENABLE; paramSet.destAddr = rxBufPtr[rxBuf]; paramSet.bCnt = NUM_SAMPLES_PER_AUDIO_BUF; paramSet.linkAddr = parLink * SIZE_PARAMSET ; EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, parId, ¶mSet); } /****************************************************************************/ /* */ /* 此函数会在接收完成中断里调用 */ /* */ /****************************************************************************/ static void McASPRxDMAComplHandler(void) { unsigned short nxtParToUpdate; // 更新 lastFullRxBuf 标志一个新的接收 buffer 接收完成 lastFullRxBuf = (lastFullRxBuf + 1) % NUM_BUF; nxtParToUpdate = PAR_RX_START + parOffRcvd; parOffRcvd = (parOffRcvd + 1) % NUM_PAR; // 激活 DMA 传输器的一个参数集,用于接收数据到给定的buffer BufferRxDMAActivate(nxtBufToRcv, nxtParToUpdate, PAR_RX_START + parOffRcvd); // 更新下一个要接收数据的buffer nxtBufToRcv = (nxtBufToRcv + 1) % NUM_BUF; } /****************************************************************************/ /* */ /* 此函数会在发送完成中断里调用 */ /* */ /****************************************************************************/ static void McASPTxDMAComplHandler(void) { ParamTxLoopJobSet((unsigned short)(PAR_TX_START + parOffSent)); parOffSent = (parOffSent + 1) % NUM_PAR; } /****************************************************************************/ /* */ /* EDMA 传输完成中断服务函数 */ /* */ /****************************************************************************/ void EDMA3CCComplIsr(UArg arg) { // 判断接收 DMA 完成 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCASP0_RX)) { // 清除 0 通道中断标志 EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX); McASPRxDMAComplHandler(); } // 判断发送 DMA 完成 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCASP0_TX)) { // 清除 1 通道中断标志 EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_TX); McASPTxDMAComplHandler(); } }
RTOS/TMDXIDK5718: SYSBIOS program termination cause
Part Number:TMDXIDK5718
Tool/software:TI-RTOS
Hi
When developing a SYSBIOS program sometimes the program is halted at the function _exit() within the syscalls.c file.
How can I find the cause for this termination?
Regards,
Markus
REF5050A-Q1: TRIM/NR pin handling when this pin is not used
Part Number:REF5050A-Q1
Can we leave TRIM/NR pin open when we don't use TRIM/NR pin function?
Best Regards,
Kohei Sasaki
Linux/WL1837MODCOM8I: Couldn't see or enable WLAN0 via command on TMDXEVM3358
Part Number:WL1837MODCOM8I
Tool/software: Linux
Hi,
I recently loaded the TMDXEVM3358 SDK thru the provided SD card with latest SW from this link: http://software-dl.ti.com/processor-sdk-linux/esd/AM335X/latest/index_FDS.html
The OS booted well in the provided evaluation board and so does UART communication from my windows PC to the target device.
I managed to get into the Linux root but couldn't get to see the WLAN0 option when I keyed "ifconfig". Keying in "ifconfig wlan0 up" returned "ifconfig: SIOCGIFFLAGS: No such device". I inserted the WL1837MODCOM8I into the indicated slot below the development board. Am I missing something?
Thanks!
Best regards,
TeeHowe
Electrical Design Engineer
LMR14030-Q1: Influence of spread spectrum for noise of FM radio(70MHz-100MHz)
Part Number:LMR14030-Q1
Hi,
Is SS also valid for reduction of noise of FM radio (70MHz-100MHz) ?
I'm understanding that spread spectrum(SS) can reduce average radiation energy and it should be valid for reduction of EMI.
However radio noise is audible even if the noise is moment, so I think that it should be discussed not average energy but peak energy.
I guess that SS is not valid for radio noise because spurious of Instantaneous peak value is not reduced.
What do you think about this?
Best Regards,
Kuramochi
CC2538: coexistance of CC2538/CC3200
Compiler/TMS320F28377S: Wrong C28x instructions used in CLA codes should be warned by the compiler
Part Number:TMS320F28377S
Tool/software: TI C/C++ Compiler
Champs,
If a user uses C28x instructions in CLA codes, will there be warnings in the C2000 compiler?
For example,
If in CLA C codes, they use
EALLOW; // CLA should use MEALLOW;
asm("NOP"); // CLA should use asm("MNOP");
If not, would you please add warnings in the newer compiler so that the user can avoid making such mistakes?
Some of our customers made this kind of mistake and spent lots of time debugging it.
Wayne
CC3220S-LAUNCHXL: Why can I get IP mask when I acquired Ip Address? Below is the event of IPACQUIRED, it can only give me the ip and gateway from the pEventData.
Part Number:CC3220S-LAUNCHXL
case SL_DEVICE_EVENT_DROPPED_NETAPP_IPACQUIRED:
{
SlIpV4AcquiredAsync_t *pEventData = NULL;
SET_STATUS_BIT(app_CB.Status, STATUS_BIT_IP_ACQUIRED);
/* Ip Acquired Event Data */
pEventData = &pNetAppEvent->Data.IpAcquiredV4;
app_CB.CON_CB.IpAddr = pEventData->Ip ;
/* Gateway IP address */
app_CB.CON_CB.GatewayIP = pEventData->Gateway;
UART_PRINT("\n\r[NETAPP EVENT] IP set to: IPv4=%d.%d.%d.%d , "
"Gateway=%d.%d.%d.%d\n\r",
SL_IPV4_BYTE(app_CB.CON_CB.IpAddr,3),
SL_IPV4_BYTE(app_CB.CON_CB.IpAddr,2),
SL_IPV4_BYTE(app_CB.CON_CB.IpAddr,1),
SL_IPV4_BYTE(app_CB.CON_CB.IpAddr,0),
SL_IPV4_BYTE(app_CB.CON_CB.GatewayIP,3),
SL_IPV4_BYTE(app_CB.CON_CB.GatewayIP,2),
SL_IPV4_BYTE(app_CB.CON_CB.GatewayIP,1),
SL_IPV4_BYTE(app_CB.CON_CB.GatewayIP,0));
sem_post(&(app_CB.CON_CB.ip4acquireEventSyncObj));
}
AM3358: Delay from PWRONRSTn to ROM code pinmux
Part Number:AM3358
Good Morning,
I'm reviewing a schematic for a AM3358 (EP) booting from non-multiplexed NOR flash.
I'd like to understand the reuse of SYSBOOT pins for ROM boot code GPMC transactions.
Given that:
1) PWRONRSTn is held low long enough for all logic levels to settle
2) PWRONRSTn transitions low to high, at which point the SYSBOOT pins are latched
3) the SYSBOOT pins are configured to boot from non-multiplex NOR flash first
With reference to that PWRONRSTn transition from low to high, at what point in time:
4) would the 'Reset Release State' [begin to] occur across all of the pins
5) would the ROM boot code configure and use GPMC_A0 - GPMC_A11
A description of the logic and order of magnitude would be much appreciated.
Many thanks,
Mark
Linux/CC3100MOD: cc3100mod driver for linux system
CCS/TMS320F28069: Using TMS320F28069 and AFE031 to develop a data transmission system
Part Number:TMS320F28069
Tool/software: Code Composer Studio
Hi everyone, I'm new in the world of DSP.
I’d like to use TMS320F28069 and AFE031 to develop a data transmission system, and I have read PRIME_DDK_PackageV7910. But when I first program the transmission module, the process is not smooth, here are some problems:
I want to use the API of HAL layer to program the entire transmission system and call the HAL layer API plus some of my own program to achieve PHY layer. Is this feasible? How can I complete this procedure?
I try to initialize with HAL_afeInit(), HAL_afeTxInit() and HAL_afeRxInit(), then use HAL_afeSet() at AFE_TX_START. Is this possible to send a signal?
According to the API document, HAL_afeDacCnv() is used to convert the digital data into DAC format. Do I need this API? Why the output is always 2048?
When using the AFE_TX_START of HAL_afeSet(), how should I configure the struct HAL_afe_txSetParms_t? Such as the CPU timre0 and the pointer to callback function.
I just enable the DAC port between the 28069 and DAC Register. Do I need to configure the other ports? Such as the ports of SPI between 28069 and AFE.
Hi everyone, I'm new in the world of DSP.
I’d like to use TMS320F28069 and AFE031 to develop a data transmission system, and I have read PRIME_DDK_PackageV7910. But when I first program the transmission module, the process is not smooth, here are some problems:
I want to use the API of HAL layer to program the entire transmission system and call the HAL layer API plus some of my own program to achieve PHY layer. Is this feasible? How can I complete this procedure?
I try to initialize with HAL_afeInit(), HAL_afeTxInit() and HAL_afeRxInit(), then use HAL_afeSet() at AFE_TX_START. Is this possible to send a signal?
According to the API document, HAL_afeDacCnv() is used to convert the digital data into DAC format. Do I need this API? Why the output is always 2048?
When using the AFE_TX_START of HAL_afeSet(), how should I configure the struct HAL_afe_txSetParms_t? Such as the CPU timre0 and the pointer to callback function.
I just enable the DAC port between the 28069 and DAC Register. Do I need to configure the other ports? Such as the ports of SPI between 28069 and AFE.
TUSB1002: TUSB1002 topology
Compiler/CC1310: Setting/Getting Timestamp
Part Number:CC1310
Tool/software: TI C/C++ Compiler
Hi,
I want to get a timestamp on a CC1310. When using the Launchpad Rev1.3, I can just get the Timestamp with the time and localtime functions. On my own board, this doesn't work. The date is 01.01.1900, so I think the time is just not set on my board but is set on the Launchpads.
So I want to set the time according to this post: e2e.ti.com/.../1871387
My problem is, that I cannot use Seconds_set. I have included time.h and ti/sysbios/hal/Seconds.h. When I use Seconds_set, I get a Linker Error what says "unresolved symbols remain" for ti_sysbios_hal_Seconds_set__E.
Is there another way to set the current Date/Time, or a way to fix the issue with Seconds_set?
I'm using the sensor example from the simplelink SDK 1.50.
PCM5102A: Audio Serial Interface AC timing
Part Number:PCM5102A
Hi,
A customer asks us about the timing specification of PCM5102A.
He could not find AC timing specification about Audio Serial Interface on datasheet except about SCK in page 11.
Are there timing specifications about LRCK, BCK and DIN, e.g. high/low clock pulse width, duty cycle, rise/fall time, setup/hold time and so on?
The purpose is timing check of the I2S signal of thier prototype board. The sample rate is fixed at 48kHz.
Best regards,
Akio Ito
Starterware/TDA2EVM5777: How to config VIP to capture BT656 signal which has h_porch(h_blanking) and v_porch(v_blanking) info?
Part Number:TDA2EVM5777
Tool/software: Starterware
Hi Guys,
We have a special use case on TDA2X platform, that is convert a HDMI output to BT656 signal, and connect to camera interface.
The question is, the HDMI signal has porch(blanking) info, for example , the v_porch/v_blanking is 2 pixels, the h_porch/h_blanking is 30 pixels. So, the TDA2X captured this image with a black bar on top and left side. I'd like to know how to config the VIP part to capture the valid image area(skip the porch/blanking info)?
Thank you very much!
waley
Linux/TAS5756M: PurePath Console 2 regs and registerpatches
Part Number:TAS5756M
Tool/software: Linux
Hello TI,
using PPC2 i'm trying to generate init regs for HybridFlow 3 (MONO 1.1) and then afterward some patches to enable PBE etc..
I am able to generate the init registers, its an array of ~4400 cfg_regs and is transmitted succesfully before codec probe.
I can also generate patches to alter the initial config at runtime but these patches are saved in a cfg format, while I can dump the whole init array as a header file.
I noticed that in PurePath Studio, these register patches are saved as header files which is what I need.
So my question is; can this be done in PPC2 as well ? That would save me a lot of work converting the cfg's to .h
A second question: for testing i created some extreme crossoverfilter settings (between chA/chB) and then played some sinewaves of differing frequencies but theyre not filtered in any way.
I don't notice any change in audio when using different init cfg_regs.. can anyone perhaps give me some pointers ? I read the TAS datasheet and the 'using hybridflow on PCM52xx and TAS5756M' but to no avail.. I understand how it works but can't seem to get it working.
Best regards,
Thomas B
TMUX136: IBIS model of TMUX136RSER
Part Number:TMUX136
Where can get the IBIS model of TMUX136RSER? Can anybody help? Thanks.
TPS543C20: Load Transient
Part Number:TPS543C20
Hi,
Could you tell me the information about TPS543C20?
Is there the data on load transient characteristics under the following conditions when using TPS543C20EVM-869?
【condition】
Vin: 10 V or 12 V
Vout: 0.95 V or 1.05 V
Iout: 50A to 60A (the slew rate is 16 A/us.)
Also, our custormer's request is that the load transient falls within ± 20 mV.
What is the value of Cout to achieve this?
Best Regards,
Yuto Sakai
CCS/CC1310: EasyLink Lib. , Does It support frequencies 433Mhz?
Part Number:CC1310
Tool/software: Code Composer Studio
EasyLink Lib. , Does It support frequencies 433Mhz?
I used rfEasyLinkListenBeforeTalk project and call EasyLink_init(EasyLink_Phy_625bpsLrm); EasyLink_setFrequency(920000000); ,It can work.(I used the SmartRF Studio Receive the data)
When I used EasyLink_setFrequency(434000000); It can not work.
Please advise me.
!Note : I developed hardware myself to support 433Mhz and 920Mhz and I can prove the hardware by using the Smart RF Studio Program.