BRT Community

Please login or register.

Login with username, password and session length
Advanced search  

News:

Welcome to the Bridgetek Community!

Please read our Welcome Note

Technical Support enquires
please contact the team
@ Bridgetek Support

Please refer to our website for detailed information on all our products - Bridgetek - Bridging Technology

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - BRT Community

Pages: 1 ... 26 27 [28] 29 30 ... 50
406
Discussion - EVE / Re: EVE Asset Builder
« on: April 12, 2021, 01:27:33 PM »
Hello,

thank you for your feedback and testing!

I have passed this back to the develoers so they can take account of this for the next official EAB release.

As for the number of characters in the .xfont file, it is my understanding that this is because the .xfont file contains a width table for all Unicode characters up until the last Unicode character included in the input character set. For unconverted characters these font widths would of course be 0 for their Unicode position. however it still appears that you are seeing discrepancies with this in your testing.

Best Rergards,
BRT Community

407
Discussion - EVE / Re: Atmel CTP Support
« on: April 12, 2021, 11:38:07 AM »
Hello,

When using the Custom Touch functionality with the BT815/7 you would connect the CTP directly to the EVE IC and not the MCU.

Sorry I should have clarified that the relevant points from section 6.7.2 of AN_336 are how to load the .h file into RAM_CMD, a similar approach can be used for the custom touch firmware generated in EAB for the BT815/7.

Best Regards,
BRT Community

408
Discussion - EVE / Re: Atmel CTP Support
« on: April 09, 2021, 01:47:47 PM »
Hello,

The development team have confirmed that you would load the FW (.h file) into RAM_CMD and execute the commands till completion.
You can refer to section 6.7.2 of AN_336, for a similar example to load touch host mode FW.

Best Regards,
BRT Community

409
Discussion - EVE / Re: EVE Asset Builder
« on: April 09, 2021, 12:01:08 PM »
Hello Rudolph,

Sorry I had passed this onto the development team for some clarification, but they are quite busy recently. I will chase them up on this.

I believe the v2.2.0 release is intended as an internal release for some bug updates, while the next official release will be v2.3.0.

However the release note does mention the following:
Code: [Select]
Feature updates
- Improve flash programming utility to work with 128 Mbytes flash chip
- Improve font utility:
  + Report only valid characters
  + Calculate the number of characters in each unicode ranges

As such I believe this will resolve some of the issues you have been seeing.

EDIT: please use the following link: EVE-Asset-Builder-setup-2.2.0-rc2.zip

Best Regards,
BRT Community

410
Discussion - EVE / Re: create an array of widgets
« on: April 08, 2021, 05:09:44 PM »
Hello,

ESD does have the way to create widget at run-time but it needs user code involved. 
I suggest you take a look at the ScrollPanel Example project under “Intermediate” folder as part of the ESD Toolchain.

Open the project and check the “ScrollContent” node and “MainPage_Add_New” node.

“ScrollContent” node is a linear layout widget which manages the newly created button and decide where to put them on screen.
“MainPage_Add_New” node is from user code in MainPage.c which creates the button widget when users clicks “Add New” button.

Here is the code:

Code: [Select]
// Add a button to the scroll panel
ESD_METHOD(MainPage_Add_New, Context = MainPage)
void MainPage_Add_New(MainPage *context)
{
                // Create the widget
                ButtonState *widget = malloc(sizeof(ButtonState));
                Ft_Esd_PushButton__Initializer(&widget->Button);
                Ft_Esd_Widget *esdWidget = &widget->Button.Widget;

                widget->Owner = context;
                esdWidget->Instanced = FT_TRUE; // Mark to be freed by parent End
                esdWidget->Owner = widget; // Self-owned

                // Create our user state
                sprintf(widget->Text, "Button %i", buttonNumber);
                ++buttonNumber;

                // Set user bindings
                widget->Button.Pushed = Button_Pushed;
                widget->Button.Text = Button_Text;

                // Start widget
                esdWidget->Slots->Start(esdWidget);
                esdWidget->Active = FT_TRUE;
                Ft_Esd_Widget_InsertBottom(esdWidget, &context->ScrollContent);
}

Open the MenuPage.page to see the node connections.

Best Regards,
BRT Community

411
Discussion - EVE / Re: Atmel CTP Support
« on: April 08, 2021, 11:38:21 AM »
Hello,

There is a readme file contained in EAB which covers the creation of the firmware. Unfortunately however I do not have a application note currently which covers uploading this to EVE, but I will chase the development team up for an example. I suspect this file has to be written to RAM_CMD during the initialization sequence.

And unfortunately no the BT815/7 does not natively support the IL2511, you would need to utilise touch host mode or a custom touch firmware file for this CTP.

Best Regards,
BRT Community

412
Discussion - EVE / Re: Non square pixel support BT817/818 using HSF
« on: April 07, 2021, 04:21:43 PM »
Hello,

Thank you for your question.

The Horizontal Scanout Filter is controlled on the BT817 with the CMD_HSF command.

Please see section 5.111 of the BT81X Programmers guide for an example:
https://brtchip.com/wp-content/uploads/Support/Documentation/Programming_Guides/ICs/EVE/BRT_AN_033_BT81X_Series_Programming_Guide.pdf

If I were to keep 1024 x 600 and set HSF to get square pixels, would I then see an unused region on the right hand edge of the display? If so, could I then increase the resolution to (for example) 1060 x 600 to use the entire width of the display?

Yes that is correct, you must alter the HSIZE display setting to take into account the implementation of HSF.

Unfortunately neither EVE Screen Designer or EVE screen Editor have implemented support for CMD_HSF as of yet.

Best Regards,
BRT Community

413
Discussion - EVE / Re: Atmel CTP Support
« on: April 07, 2021, 04:03:37 PM »
Hello,

No, this is not the same approach as utilising Touch Host mode.

The EAB Custom Touch tab enables the feature of compiling custom CTP firmware. You can write custom CTP firmware in C and use EAB to compile into a downloadable binary(blob). The output binary can then be downloaded into RAM_CMD to allow you to use your CTP which would be connected directly to the BT815/7.

Best Regards,
BRT Community

414
Discussion - EVE / Re: Autoresize label width
« on: April 07, 2021, 10:07:48 AM »
Hello,

The development team have confirmed that this is a know issue and they are looking to resolve this in an upcoming release.

Best Regards,
BRT Community

415
Discussion - EVE / Re: Atmel CTP Support
« on: April 06, 2021, 05:50:47 PM »
Hello,

Thank you for your question.

Unfortunately it would not be possible to utilise the ATMXT336T touch controller just by altering the I2C address in REG_TOUCH_CONFIG as this controller is not natively supported by EVE.

However a new feature in EVE Asset Builder allows for the compilation of custom touch firmware for unsupported devices (see attached screenshot). This can then be written to EVE to allow the use of your desired CTP.

Best Regards,
BRT Community

416
Discussion - EVE / Re: Scroll Switch Page button control
« on: April 06, 2021, 05:18:06 PM »
Hello,

Thank you for your question.

There is an example in the upcoming ESD 4.12 release which exhibits this functionality.

"An example project to showcase scroll the pages with button instead of touch, and add rolling number widgets"

I will clarify with the development team when this is due for release.

Best Regards,
BRT Community.

417
Discussion - EVE / Re: Autoresize label width
« on: April 06, 2021, 05:13:02 PM »
Hello,

Thank you for the confirmation, I have also given this a try and I am seeing similar results. I've asked the development team to clarify if this is a bug in ESD.

Best Regards,
BRT Community.

418
Discussion - EVE / Re: Autoresize label width
« on: April 05, 2021, 03:39:48 PM »
Hello,

Thank you for your question.

In the ESD Label properties how have you configured the AutoResize property? (see attached image for available options)


Best Regards,
BRT Community

419
Hello,

Thank you for the updates.

Unfortunately the second sparkfun link seems to be broken.

Thank you for the clarification on the CS# signal, in our libraries we utilise a similar approach (holding the CS# low for a full read/write operation). however from your capture it looks like there is an errant CS# toggle between transactions. When are you asserting this signal in your code.

As for the PD# signal this is an input and shouldn't be toggling during SPI transactions. There is nothing internal to EVE which would cause this behaviour, can you double check your code to see if your are inadvertently toggling this line? I can see from the scope capture this seems to be happening, as a result EVE will be reset every time this signal toggles. This is likely to be an issue, you may want to try adjusting the driver strength on this pin.

As for the REG_ID read returning incorrectly, this could be related to the either of the above. But can you please clarify which SPI mode you are using with the SPI master interface? (I cannot zoom in enough onto the capture to establish this, please send a zoomed in capture of the MISO/MOSO and CLK lines if possible). The PIC should be configure to use SPI mode 0.

I have attached a SPI capture  for reference of the following code being used within the BRT_AN_025 library:

Code: [Select]
void eve_display(void)
{

    delay(200);
                uint32_t dlOffset;
                uint32_t x = 0;

//            uint32_t xoffset, yoffset, xoffset2, yoffset2;
                uint32_t FT_DispWidth1 = 800;
                uint32_t FT_Dispheight1 = 480;
//
//    xoffset = FT_DispWidth1 / 2;                             // Variables to hold coordinates where the static text will be placed
//    yoffset = FT_DispHeight1 / 2;
//
//    xoffset2 = FT_DispWidth1 / 3;                            // Variables to hold coordinates where the dynamic text will be placed
//    yoffset2 = FT_DispHeight1 / 3;

    EVE_LIB_BeginCoProList();
    EVE_CMD_MEMSET(0,0,10*1024);
    EVE_LIB_EndCoProList();
    EVE_LIB_AwaitCoProEmpty();

    EVE_LIB_BeginCoProList();
    EVE_CMD_DLSTART();
    EVE_CLEAR_COLOR_RGB(0, 0, 0);
    EVE_CLEAR(1,1,1);
    EVE_COLOR_RGB(255,255,255);
    EVE_CMD_TEXT(10, 50, 31, 0, "abc");
    EVE_CMD_TEXT(10, 100, 31, 0, "123456789456123123");
    EVE_CMD_TEXT(10, 200, 31, 0, "456");
    EVE_CMD_TEXT(10, 300, 31, 0, "456");
    EVE_CMD_TEXT(10, 400, 31, 0, "456");

    EVE_LIB_EndCoProList();
    EVE_LIB_AwaitCoProEmpty();

    dlOffset = HAL_MemRead16(EVE_REG_CMD_DL);

    EVE_LIB_BeginCoProList();
    EVE_CMD_MEMCPY(1000,EVE_RAM_DL,dlOffset);
    EVE_LIB_EndCoProList();
    EVE_LIB_AwaitCoProEmpty();

                do {

                    EVE_LIB_BeginCoProList();
                    EVE_CMD_DLSTART();
                    EVE_CLEAR(1,1,1);
                    EVE_CMD_APPEND(1000,dlOffset);
                    EVE_COLOR_RGB(255,0,0);
                    EVE_CMD_TEXT(FT_DispWidth1/3 , FT_Dispheight1/3, 31, 0, "Dynamic");
                    EVE_COLOR_RGB(0,0,255);
                 EVE_CMD_TEXT(FT_DispWidth1/2 , FT_Dispheight1/2, 31, 0, "Dynamic");
                 EVE_CMD_NUMBER(200,100,31,EVE_OPT_CENTER | EVE_OPT_RIGHTX | 6 , x);
                    EVE_DISPLAY();
                    EVE_CMD_SWAP();
                    EVE_LIB_EndCoProList();
                    EVE_LIB_AwaitCoProEmpty();

                    delay(500);
                    x++;

                } while (1);
}

This code utilises the following boot sequence (see the BRT_AN_025 source):

Code: [Select]

       MCU_PDlow();                                                                // PD low to reset device                                                               
    MCU_Delay_20ms();
    MCU_PDhigh();                                                               // PD high again
    MCU_Delay_20ms();

    // ---------------------- Delay to allow FT81x start-up --------------------   
   
    EVE_CmdWrite(FT81x_ACTIVE, 0x00);                                           // Sends 00 00 00 to wake FT8xx
   
    MCU_Delay_500ms();                                                          // 500ms delay (EVE requires at least 300ms here))
       
    // --------------- Check that FT8xx ready and SPI comms OK -----------------
   
    while (EVE_MemRead8(REG_ID) != 0x7C)                                        // Read REG_ID register until reads 0x7C
    {
    }
     
    while (EVE_MemRead8(REG_CPURESET) != 0x00)                                  // Ensure CPUreset register reads 0 and so FT8xx is ready   
    {
    }
   
    // ------------------------- Display settings ------------------------------

    // WQVGA display parameters
    lcdWidth   = 800;                                                           // Active width of LCD display
    lcdHeight  = 480;                                                           // Active height of LCD display
    lcdHcycle  = 928;                                                           // Total number of clocks per line
    lcdHoffset = 88;                                                            // Start of active line
    lcdHsync0  = 0;                                                             // Start of horizontal sync pulse
    lcdHsync1  = 48;                                                            // End of horizontal sync pulse
    lcdVcycle  = 525;                                                           // Total number of lines per screen
    lcdVoffset = 32;                                                            // Start of active screen
    lcdVsync0  = 0;                                                             // Start of vertical sync pulse
    lcdVsync1  = 3;                                                             // End of vertical sync pulse
    lcdPclk    = 2;                                                             // Pixel Clock
    lcdSwizzle = 0;                                                             // Define RGB output pins
    lcdPclkpol = 1;                                                             // Define active edge of PCLK
       
    EVE_MemWrite16(REG_HSIZE,   lcdWidth);     
    EVE_MemWrite16(REG_HCYCLE,  lcdHcycle);     
    EVE_MemWrite16(REG_HOFFSET, lcdHoffset);   
    EVE_MemWrite16(REG_HSYNC0,  lcdHsync0);     
    EVE_MemWrite16(REG_HSYNC1,  lcdHsync1);     
    EVE_MemWrite16(REG_VSIZE,   lcdHeight);     
    EVE_MemWrite16(REG_VCYCLE,  lcdVcycle);     
    EVE_MemWrite16(REG_VOFFSET, lcdVoffset);   
    EVE_MemWrite16(REG_VSYNC0,  lcdVsync0);     
    EVE_MemWrite16(REG_VSYNC1,  lcdVsync1);     
    EVE_MemWrite8(REG_SWIZZLE,  lcdSwizzle);   
    EVE_MemWrite8(REG_PCLK_POL, lcdPclkpol);   
   
       
    // ---------------------- Touch and Audio settings -------------------------

    EVE_MemWrite16(REG_TOUCH_RZTHRESH, 1200);                                   // Eliminate any false touches

    EVE_MemWrite8(REG_VOL_PB, ZERO);                                            // turn recorded audio volume down
    EVE_MemWrite8(REG_VOL_SOUND, ZERO);                                         // turn volume down
    EVE_MemWrite16(REG_SOUND, 0x6000);                                          // set volume mute
       
   
    // ---------------- Configure the GPIO and PWM  --------------------
   
    EVE_MemWrite8(REG_PWM_DUTY, 0);                                             // Backlight off
   
    FT81x_GPIO_DAT = EVE_MemRead16(REG_GPIOX);                                  // Read the FT81x GPIO register for a read/modify/write operation
    FT81x_GPIO_DAT = FT81x_GPIO_DAT | 0x8000;                                   // set bit 15 of GPIO register (DISP). If using audio, also enable the amplifier shutdown GPIO line here
    EVE_MemWrite16(REG_GPIOX, FT81x_GPIO_DAT);                                  // Enable the DISP signal to the LCD panel

    FT81x_GPIO_DIR = EVE_MemRead16(REG_GPIOX_DIR);                              // Read the FT81x GPIO DIR register for a read/modify/write operation
    FT81x_GPIO_DIR = FT81x_GPIO_DIR | 0x8000;                                   // DISP is output, if using audio, also set the associated shutdown line as output (check your Eval module schematic))
    EVE_MemWrite16(REG_GPIOX_DIR, FT81x_GPIO_DIR);                              // Enable the DISP signal to the LCD panel
       

    // ---------------------- Create an initial screen before we enable the display -------------------------

    ramDisplayList = RAM_DL;                                                    // start of Display List
    EVE_MemWrite32(ramDisplayList, 0x02000000);                                 // Clear Color RGB sets the colour to clear screen to

    ramDisplayList += 4;                                                        // point to next location
    EVE_MemWrite32(ramDisplayList, (0x26000000 | 0x00000007));                  // Clear 00100110 -------- -------- -----CST  (C/S/T define which parameters to clear)

    ramDisplayList += 4;                                                        // point to next location
    EVE_MemWrite32(ramDisplayList, 0x00000000);                                 // DISPLAY command 00000000 00000000 00000000 00000000 (end of display list)

    EVE_MemWrite32(REG_DLSWAP, DLSWAP_FRAME);                                   // Swap display list to make the edited one active

    // -------------------- Now turn on PCLK and ramp the PWM up  -------------------------------------
    // ---------------- This provides a clean start-up for the application ----------------------------
       
    EVE_MemWrite8(REG_PCLK, lcdPclk);                                           // Now start clocking data to the LCD panel

    MCU_Delay_20ms();
   
    for(PWM = 0; PWM <= 127; PWM ++)
    {
        EVE_MemWrite8(REG_PWM_DUTY, PWM);     
        MCU_Delay_20ms();
    }
   



This capture can be viewed using Saleae's Logic software:
https://www.saleae.com/downloads/

Note: channel 4 in this capture represents the PD# pin.

This was a general example for another customer however in this case the 'config' section in the 'capture.jpg' image attached should be useful as it provides a set of known good SPI transactions to EVE for comparison in your set up. It may be worth comparing this section with the SPI data you are seeing in your configuration.

The first SPI transaction should be the "while (EVE_MemRead8(0X302000) != 0x7C)" call, so I have included a zoom of this attached as 'REG_ID.jpg'. Could you share a zoomed scope capture of your REG_ID read?

Best Regards,
BRT Community

420
Discussion - EVE / Re: cap-touch: configure / gesture ?
« on: March 26, 2021, 03:25:03 PM »
Hello,

In general to adjust the sensitivity of a capacitive touch control you would hold the CTP in reset and write configuration values to it. It would also be possible to write the applicable registers with your MCU. Unfortunately I do not have any examples for the GT911 to had, but I do have some examples for focaltech parts.

For BT81X:
- Hold the touch engine in reset (set REG_CPURESET = 2)
- Write the CTPM configuration register address and value to the BT81x designated memory location
- Up to 10 register address/value can be added
- Release the touch engine reset (set REG_CPURESET = 0)

Code: [Select]
#define FW_RD(a) VC.rd16(RAM_JTBOOT + 2 * (a))
#define FW_WR(a, v) VC.wr16(RAM_JTBOOT + 2 * (a), (v))
void init_custom_touch(size_t num_regs, uint8_t *reg_value)
{
 while (VC.rd(REG_CPURESET) != 0)
 ;
 VC.wr(REG_CPURESET, 2);
 uint16_t main = FW_RD(0) & 0xfff;
 uint16_t i_set = 0x4000 | (main - 4);
 uint16_t patch = main + 1;
 uint16_t i_eol = FW_RD(patch);
 while (num_regs--) {
 uint8_t reg = *reg_value++;
 uint8_t val = *reg_value++;
 FW_WR(patch++, 0x8000 | val);
 FW_WR(patch++, 0x8000 | reg);
 FW_WR(patch++, i_set);
 }
 FW_WR(patch, i_eol);
 VC.wr(REG_CPURESET, 0);
}

For FT801:
- Bootup FT801
- Enable ROMSUB to be accessible by host
- Hold the touch engine in reset
- Download firmware and write respective registers & values into memory location indicated by PATCH_START macro (array of {register address,register value}is the structure used)
- Disable ROMSUB to be accessible by host
- Release the touch engine from reset

Please see FT801_SampleApp_CustomFW.zip

For FT81x:
-Similar to above

Please see FT811_SampleApp_CustomFW.7Z where the firmware included is for FT5x06 controllers. It can support sensitivity but some other changes need the factory mode of the CTP and so please check for your CTP datasheet.

If factory mode changes are needed, you can get programmer modules for CTP from the CTP manufacturer.


CTouchFirmware[] - Custom firmware to download
SAMAPP_BootupConfig() - Api for FT8xx bootup. Presently demonstrate setting up of 4 controller registers with respective values.
SAMAPP_InitCustomTouch() - Api to download the firmware, set the values of intended registers and values of capacitive touch controller.
 
Please note: The host shall follow this programming procedure every time the touch engine is reset or FT8xx is been through power modes.

Setting the REG_CTOUCH_EXTENDED register to allow for extended mode provides extra touch_xy registers for up to 5 touch points, it would then be up to the application to infer any gestures from the given tough inputs.

Best Regards,
BRT Community

Pages: 1 ... 26 27 [28] 29 30 ... 50