We do not support isochronous transfers. I have found that the bottleneck for increased throughput as a bulk device is the Host. The Host does not request enough packets. The host does not send DATA IN packets fast enough for the throughput to increase. I have noticed this particularly on Windows PCs. There are may layers of the Windows OS which decreases the throughput. The C28x CPU has many idle cycles. This is not a limitation of the device, as I have found in my experimentation. Regards, sal
↧
Forum Post: RE: TMS320F28375S: TMS320F28375S usb_dev_serial example device receive errors.
↧
Forum Post: RE: TMS320F28069 :28069 Error creating serial boot loader
What likely happened is that the host sent the data but it somehow got missed on the device side. SO the host is waiting for some data back and it isn't receiving it. Have you gotten this to work from standalone by booting to the SCI bootloader function? sal
↧
↧
Forum Post: RE: CCS/MSP430FR2355: Flashing a Code gives an Error and asks for a Firmware Update
Ok, that shouldn't be a problem. Check the Digikey website for returns. I believe you need to request an RMA (return material authorization) with your customer information. There is even an on-line CHAT if you want to ask that person the specific steps needed for your return.
↧
Forum Post: RE: CCS/TM4C1294NCPDT: TM4C1294NCPDT
Did you check the signal on PD0 (SSI2Tx) with a scope or logic analyzer? Do you have PD0 connected to PD1 (SSI2Rx)? Here is an example project that can be run on an EK-TM4c1294XL Launchpad. It uses SSI0. To see the data received being echoed back, connect PA4 to PA5 with a jumper wire. Use Code Composer Studio "File" -> "Import" to import this project into your workspace. /cfs-file/__key/communityserver-discussions-components-files/908/5808.SPI_5F00_Master.zip
↧
Forum Post: MSP430 with CAN interface?
Hello All, Do we have MSP430 with CAN interface? Many Thanks, Antonio
↧
↧
Forum Post: RE: CCS/CCSTUDIO3: Is IQmath.lib compatible with the floating point unit support?
Elizaveta, Yes, this is possible. You should include IQmath_fpu32.lib, which should also be present in the same location where IQmath.lib is located. This is available both with ControlSUITE as well as C2000Ware . Please try this and let me know if it works. Thanks, Sira
↧
Forum Post: RE: TMS320F28377D: TMS320F28377D: Flash Programming through JTAG
I do not know exactly what those commands are doing. That requires more device specific info than what I have. I'm more for a debug probe guru. Maybe Vivek can redirect that question to the appropriate device team members.
↧
Forum Post: RE: LAUNCHXL-F28379D: how to change sysclk value
Yes, I looked into it and changed the values accordingly. However, if I try to reduce it below 8.571MHz(120 to 8.75MHz using lspclk), I get more issues. I used: InitSysPll(XTAL_OSC,IMULT_24,FMULT_0,PLLCLK_BY_2); which gives 120MHz. hbaud-0x0000; lbaud-0x006f; This is for 120MHz and it works without issues. The issues arise when i try to bring cpu frequency below 120MHz(as mentioned in my previous comment). I just want to decrease CPU frequency to 10 MHz at least. What am i Missing?
↧
Forum Post: RE: MSP430FR2433: Lowest current that EnergyTrace will show, e.g. of LPM4.5
Eason: not sure how exactly you measured nA? Did you a connect a multimeter having 10Mohm input resistance, in the 200mV setting (measuring volts) in series with the target power supply (on the jumper 3_3V from the FET to the target) then measure mV and convert to uA? If so, can you only measure when the target is in LPM4.5, since otherwise the multimeter input resistance also affects Vcc on the target? Or do you have a multimeter with a nA setting? I still can't easily find such a multimeter in the $20 range. I assume I am looking for one that has say a 200 nA setting, and has op amp circuitry to measure nA? Thanks for pointing out that EnergyTrace can be used without a debug session. I read the CCS User's Manual about EnergyTrace , and it explains how. I think one solution to my problem will be to buy a MSP-EXP430FR6989 LaunchPad, that supports EnergyTrace ++. My code (for the MSP430FR2433 ) should port to that target without much work, and then EnergyTrace ++ will tell me exactly what peripherals and clocks are using energy. For all I know, maybe part of the problem is a dirty board. A flux residue with 1Mohm resistance from a powered pin to ground would leak 1uA.
↧
↧
Forum Post: RE: RTOS/MSP-EXP432E401Y: OOB DEMO returns -108 error code
Chris, Academy and suggested posts didn't help. Error -108 is given when HTTP v1.1 is not found in a return packet. Wireshark capture show no response from server when I get the error. Working the issue with exosite support. Will post results when we have an answer. Randy
↧
Forum Post: RE: CCS/TMS320F28379D: C28xx_CPU1: Error connecting to the target: (Error -1135 @ 0x0) The debug probe reported an error
Hi Vivek, Thanks for the response. I've tried your suggestion and this was what I got back. It seems to me that CCS is fully updated. Does this indicate that it's not a sofware/firmware issue? Best, Quan.
↧
Forum Post: RE: CCS/TMS320F28069F: Function '__IQmpy' could not be reosolved
Holger, OK, good to know. So it looks like the issue is logged for the team to take a look at. Presume we are OK to close this specific ticket? Thanks, Sira
↧
Forum Post: RE: CCS/TMS320F28377D: 28377D:sample rate
Tianyi, I cannot answer your first question - you will have to do some investigation. I suggest you begin by verifying your sample rate: you can do this by configuring the PWM module you are using as the trigger to generate a PWM signal, and then physically measuring at the pin to be sure it really is 5 kHz. Then, measure the incoming sine wave at the ADC pin to ensure it is the expected frequency and lies within the allowable input range of the ADC (0-3V in this case). I recommend also that you test the sampling of d.c. and lower frequencies first before moving on to 2 kHz. The ADC input pins are dedicated analogue inputs, not GPIO. Regards, Richard
↧
↧
Forum Post: RE: TM4C1230H6PM: PD2 interrupt not executing handler function
Here is a working example code that can be run on an EK-TM4C123GXL Launchpad. It uses SW1 and SW2 on GPIO port F. Use Code Composer's "file"->"import" to add this project to your workspace. /cfs-file/__key/communityserver-discussions-components-files/908/6064.EK_2D00_GPIO_5F00_Interrupts.zip
↧
Forum Post: TMS320F28379D: can_external_transmit code not working with changed (CANTXA ,CANRXA) pin to (GPIO19 and GPIO18)
Part Number: TMS320F28379D //########################################################################### // // FILE: can_external_transmit.c // // TITLE: Example to demonstrate CAN external transmission // //! \addtogroup cpu01_example_list //! CAN-A to CAN-B External Transmit (can_external_transmit) //! //! This example initializes CAN module A and CAN module B for external //! communication. CAN-A module is setup to transmit incrementing data for "n" //! number of times to the CAN-B module, where "n" is the value of TXCOUNT. //! CAN-B module is setup to trigger an interrupt service routine (ISR) when //! data is received. An error flag will be set if the transmitted data doesn't //! match the received data. //! //! \note Both CAN modules on the device need to be //! connected to each other via CAN transceivers. //! //! \b External \b Connections \n //! - CANA is on GPIO31 (CANTXA) and GPIO30 (CANRXA) //! - CANB is on GPIO8 (CANTXB) and GPIO10 (CANRXB) //! //! \b Watch \b Variables \n //! - TXCOUNT - Adjust to set the number of messages to be transmitted //! - txMsgCount - A counter for the number of messages sent //! - rxMsgCount - A counter for the number of messages received //! - txMsgData - An array with the data being sent //! - rxMsgData - An array with the data that was received //! - errorFlag - A flag that indicates an error has occurred //! // //########################################################################### // $TI Release: F2837xD Support Library v200 $ // $Release Date: Tue Jun 21 13:00:02 CDT 2016 $ // $Copyright: Copyright (C) 2013-2016 Texas Instruments Incorporated - // http://www.ti.com/ ALL RIGHTS RESERVED $ //########################################################################### // // Included Files // #include "F28x_Project.h" // Device Headerfile and Examples Include File #include #include #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "inc/hw_can.h" #include "driverlib/can.h" // // Defines // #define TXCOUNT 100 #define MSG_DATA_LENGTH 8 #define TX_MSG_OBJ_ID 1 #define RX_MSG_OBJ_ID 1 // // Globals // volatile unsigned long i; volatile uint32_t txMsgCount = 0; volatile uint32_t rxMsgCount = 0; volatile uint32_t errorFlag = 0; unsigned char txMsgData[8]; unsigned char rxMsgData[4]; tCANMsgObject sTXCANMessage; tCANMsgObject sRXCANMessage; // // Function Prototypes // __interrupt void canbISR(void); // // Main // void main(void) { // // Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // InitSysCtrl(); // // Initialize GPIO and configure GPIO pins for CANTX/CANRX // on module A and B // InitGpio(); // // Setup GPIO pin mux for CAN-A TX/RX and CAN-B TX/RX // GPIO_SetupPinMux(18, GPIO_MUX_CPU1, 3); //GPIO30 - CANRXA GPIO_SetupPinOptions(18, GPIO_INPUT, GPIO_ASYNC); GPIO_SetupPinMux(19, GPIO_MUX_CPU1, 3); //GPIO31 - CANTXA GPIO_SetupPinOptions(19, GPIO_OUTPUT, GPIO_PUSHPULL); GPIO_SetupPinMux(10, GPIO_MUX_CPU1, 2); //GPIO10 - CANRXB GPIO_SetupPinOptions(10, GPIO_INPUT, GPIO_ASYNC); GPIO_SetupPinMux(8, GPIO_MUX_CPU1, 2); //GPIO8 - CANTXB GPIO_SetupPinOptions(8, GPIO_OUTPUT, GPIO_PUSHPULL); // // Initialize the CAN controllers // CANInit(CANA_BASE); CANInit(CANB_BASE); // // Setup CAN to be clocked off the PLL output clock // CANClkSourceSelect(CANA_BASE, 0); // 500kHz CAN-Clock CANClkSourceSelect(CANB_BASE, 0); // 500kHz CAN-Clock // // Set up the CAN bus bit rate to 500kHz for each module // This function sets up the CAN bus timing for a nominal configuration. // You can achieve more control over the CAN bus timing by using the // function CANBitTimingSet() instead of this one, if needed. // Additionally, consult the device data sheet for more information about // the CAN module clocking. // CANBitRateSet(CANA_BASE, 200000000, 500000); CANBitRateSet(CANB_BASE, 200000000, 500000); // // Enable interrupts on the CAN B peripheral. // CANIntEnable(CANB_BASE, CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS); // // Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts // DINT; // // Initialize the PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // InitPieCtrl(); // // Disable CPU interrupts and clear all CPU interrupt flags // IER = 0x0000; IFR = 0x0000; // // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // This will populate the entire table, even if the interrupt // is not used in this example. This is useful for debug purposes. // InitPieVectTable(); // // Interrupts that are used in this example are re-mapped to // ISR functions found within this file. // This registers the interrupt handler in PIE vector table. // EALLOW; PieVectTable.CANB0_INT = canbISR; EDIS; // // Enable the CAN-B interrupt on the processor (PIE). // PieCtrlRegs.PIEIER9.bit.INTx7 = 1; IER |= M_INT9; EINT; // // Enable the CAN-B interrupt signal // CANGlobalIntEnable(CANB_BASE, CAN_GLB_INT_CANINT0); // // Initialize the transmit message object used for sending CAN messages. // Message Object Parameters: // Message Identifier: 0x5555 // Message ID Mask: 0x0 // Message Object Flags: None // Message Data Length: 4 Bytes // Message Transmit data: txMsgData // sTXCANMessage.ui32MsgID = 0x319; sTXCANMessage.ui32MsgIDMask = 0; sTXCANMessage.ui32Flags = 0; sTXCANMessage.ui32MsgLen = MSG_DATA_LENGTH; sTXCANMessage.pucMsgData = txMsgData; // // Initialize the receive message object used for receiving CAN messages. // Message Object Parameters: // Message Identifier: 0x5555 // Message ID Mask: 0x0 // Message Object Flags: Receive Interrupt // Message Data Length: 4 Bytes // Message Receive data: rxMsgData // sRXCANMessage.ui32MsgID = 0x319; sRXCANMessage.ui32MsgIDMask = 0; sRXCANMessage.ui32Flags = MSG_OBJ_RX_INT_ENABLE; sRXCANMessage.ui32MsgLen = MSG_DATA_LENGTH; sRXCANMessage.pucMsgData = rxMsgData; CANMessageSet(CANB_BASE, RX_MSG_OBJ_ID, &sRXCANMessage, MSG_OBJ_TYPE_RX); // // Initialize the transmit message object data buffer to be sent // txMsgData[0] = 0x12; txMsgData[1] = 0x34; txMsgData[2] = 0x56; txMsgData[4] = 0x78; txMsgData[5] = 0x78; txMsgData[6] = 0x78; txMsgData[7] = 0x78; // // Start CAN module A and B operations // CANEnable(CANA_BASE); CANEnable(CANB_BASE); // // Transmit messages from CAN-A to CAN-B // for(i = 0; i < TXCOUNT; i++) { // // Check the error flag to see if errors occurred // if(errorFlag) { asm(" ESTOP0"); } // // Verify that the number of transmitted messages equal the number of // messages received before sending a new message // if(txMsgCount == rxMsgCount) { // // Transmit Message // CANMessageSet(CANA_BASE, TX_MSG_OBJ_ID, &sTXCANMessage, MSG_OBJ_TYPE_TX); txMsgCount++; } else { errorFlag = 1; } // // Delay 0.25 second before continuing // DELAY_US(1000 * 250); // // Increment the value in the transmitted message data. // txMsgData[0] += 0x01; txMsgData[1] += 0x01; txMsgData[2] += 0x01; txMsgData[3] += 0x01; } // // Stop application // asm(" ESTOP0"); } // // CAN B ISR - The interrupt service routine called when a CAN interrupt is // triggered on CAN module B. // __interrupt void canbISR(void) { uint32_t status; // // Read the CAN-B interrupt status to find the cause of the interrupt // status = CANIntStatus(CANB_BASE, CAN_INT_STS_CAUSE); // // If the cause is a controller status interrupt, then get the status // if(status == CAN_INT_INT0ID_STATUS) { // // Read the controller status. This will return a field of status // error bits that can indicate various errors. Error processing // is not done in this example for simplicity. Refer to the // API documentation for details about the error status bits. // The act of reading this status will clear the interrupt. // status = CANStatusGet(CANB_BASE, CAN_STS_CONTROL); // // Check to see if an error occurred. // if(((status & ~(CAN_ES_RXOK)) != 7) && ((status & ~(CAN_ES_RXOK)) != 0)) { // // Set a flag to indicate some errors may have occurred. // errorFlag = 1; } } // // Check if the cause is the CAN-B receive message object 1 // else if(status == RX_MSG_OBJ_ID) { // // Get the received message // CANMessageGet(CANB_BASE, RX_MSG_OBJ_ID, &sRXCANMessage, true); // // Getting to this point means that the RX interrupt occurred on // message object 1, and the message RX is complete. Clear the // message object interrupt. // CANIntClear(CANB_BASE, RX_MSG_OBJ_ID); // // Increment a counter to keep track of how many messages have been // received. In a real application this could be used to set flags to // indicate when a message is received. // rxMsgCount++; // // Since the message was received, clear any error flags. // errorFlag = 0; } // // If something unexpected caused the interrupt, this would handle it. // else { // // Spurious interrupt handling can go here. // } // // Clear the global interrupt flag for the CAN interrupt line // CANGlobalIntClear(CANB_BASE, CAN_GLB_INT_CANINT0); // // Acknowledge this interrupt located in group 9 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; } // // End of File // Hi Team, I am testing CAN_external_transmit example code available in control_Suite. Since J9 connector cannot be connected by a simple jumper wire, I am trying CAN test with another (CANTXA, CANRXA) pair as (GPIO19,GPIO18). I have connected an oscilloscope to J1 pin3(GPIO19) and pin4(GPIO18). But I couldn't see any change on an oscilloscope. Changes I did in the code are like below : Let me know if I am missing something important part of the configuration. Thanks, Akshay
↧
Forum Post: CCS/TMS570LS3137: sys_startup.c resets in _c_int00 in /* initalise the C global variables */ section
Part Number: TMS570LS3137 Tool/software: Code Composer Studio We have a custom board based on the TMS570LS3 HDK. We are using the code based on TMS570LS31x_HDK_Connectivity_Test.zip. The code compiled out of the box and we started making changes before we received the actual board to get ahead. We now have the board and started debugging the code with an XDS200 from spectrum digital. It programs and runs but gets stuck in the reset vector in sys_startup.c. When execution gets to the /* initalise the C global variables */ section it loops through twice and on the second pass at the (*handler)((const unsigned char *)loadAdr, runAdr) line it resets and enters the same vector and gets stuck in a loop. /* initalise the C global variables */ if (&__TI_Handler_Table_Base < &__TI_Handler_Table_Limit) { unsigned char **tablePtr = (unsigned char **)&__TI_CINIT_Base; unsigned char **tableLimit = (unsigned char **)&__TI_CINIT_Limit; while (tablePtr < tableLimit) { unsigned char *loadAdr = *tablePtr++; unsigned char *runAdr = *tablePtr++; unsigned char idx = *loadAdr++; handler_fptr handler = (handler_fptr)(&__TI_Handler_Table_Base)[idx]; (*handler)((const unsigned char *)loadAdr, runAdr); } } /* initalise contructors */ if (__TI_PINIT_Base < __TI_PINIT_Limit) { void (**p0)() = (void *)__TI_PINIT_Base; while ((unsigned)p0 < __TI_PINIT_Limit) { void (*p)() = *p0++; p(); } } We can get around the issue by not intiializing the C variables or constructors by putting #if 0 and #endif around the code above, but it is problematic where there is initialized data. For example we are also using the lwIP port HALCoGen EMAC Driver with lwIP Demonstration and it has initialized string variables that do not come out. We changed them to const to force them into flash, but there must be other issues where we do not have initialized data. Any ideas why this example code out of the box fails to initialize the C variables?
↧
Forum Post: RE: MSP430F2418: Programming processor over UART port
I may be completely wrong about the Rocket. I always thought it worked with both BSLDEMO and BSL-Scripter. But I'm no longer sure that's true. If you do not see some version of the invoke sequence on Reset and TEST or TCK when using BSLDEMO, then the Rocket may not be compatible with BSLDEMO. If anyone reading this has successfully flashed anything using the combination of BSLDEMO and the Rocket, please let me know. If the Rocket doesn't work, you can use a generic USB-to-Serial adapter such as an FT232, CP2102 or CH430, but you will need to use a revised version of BSLDEMO, such as the one found in my Github repo on this subject - look for BSLDEMO-2.01C.exe. https://github.com/gbhug5a/MSP430-BSL Another option is the kludge described in slaa535a.pdf and the related ZIP file. I have tested that with a G2553, and it worked.
↧
↧
Forum Post: RE: TMS320F28069M: Would TMS320F28069M be able to control 2 bldc motors at the same time?
With our motor spinning at maximum rpm of 15k, should I be concerned the sampling frequency (lower than 10kHz) will not be able to keep up with the motor (or causing aliasing) thus operating the motor inefficiently?
↧
Forum Post: RM44L920: Accessing SPI peripherals over JTAG
Part Number: RM44L920 Is it possible to configure and use the SPI (or other) peripherals on the RM4x family using JTAG? We have a need to program the contents of an external SPI EEPROM during functional test, and it would be easier to use the SPI peripheral to do this, vs. "bit banging" the pins using JTAG.
↧
Forum Post: RM44L920: Loading and running a test application image in SRAM
Part Number: RM44L920 Is it possible to load a test application image into the on board SRAM using JTAG and then run it from SRAM? The test application would be used for a functional test of the target unit.
↧