hmi700b
1. Download SPLat Firmware
Download this firmware file for your controller.
HMI700: 7-inch (diagonal) touch-screen controller
==================
== Version 5.11 ==
==================
12 November 2024
- Added code to enable the build date and time to be retrieved.
- Fixed firmware issue that made all timing that is dependent on LoopIfTiming twice as fast as it should be.
==================
== Version 5.10 ==
==================
6 March 2024
*** NXP1788 Release version only ***
- Corrected behaviour of speaker when ending RTC test: Re-enable the speaker flag
- Renamed all nVTRIM labels to differentiate between the three different VTRIM areas.
- Rebuilt NXP1788 version with correct preprocessor definitions
==================
== Version 5.09 ==
==================
11 September 2023
- Added 16-bit addressing
- Fixed bug in RAM address overflow determination code
==================
== Version 5.08 ==
==================
4 November 2022
- Changed thermistor parameter from 3970 to 3950 to improve the accuracy.
- Incorporated demo app into the Production build
==================
== Version 5.07 ==
==================
19 August 2022
***ONLY RELEASED IN LPC4088 VERSION***
- Fixed crash in pre-1609 versions caused by using the beeper instead of a speaker. Beep code now sets the pin directly for a pre-1609 version.
==================
== Version 5.06 ==
==================
14 April 2022
- Modified Modbus NVEM read/write code to save and restore the NVPtr, NVRecNum and NVRecLen values around NV read/write cycles
==================
== Version 5.05 ==
==================
29 March 2022
- Enabled and debugged speaker frequency setting code.
- Increased available tasks from 64 to 128.
- Extended Modbus access to allow reading of NVEM0, and read/write access of NVEM1, NVEM2 and NVEM3.
- Removed test for Click Code in Simple HMI Button Event 2 handler so Russian strings would work correctly.
- Doubled the SimpleHMI buffer to enable more characters to be displayed in buttons.
- Made Trim Save command actually return TRUE if OK and FALSE if not.
- Corrected Modbus Read Input Registers handling by adding a Format byte.
- Added error caller address to the status structure and message.
- Added SPx CPU call to retrieve the error caller address via SPxPoll2 8,0x11
==================
== Version 5.04 ==
==================
15 July 2021
- Corrected name of target for NXP1788 version of HMI700
- Created HMI1000 (10-inch) variant
- Created NXP1788 variant of HMI1000
==================
== Version 5.03 ==
==================
2 July 2021
- Modified production version to NOT clear the Production Test flags after a startup LCD press.
==================
== Version 5.02 ==
==================
9 June 2021
- Improved robustness of RAM test to minimise chances of residual charge fooling the tests.
- Modified alarm output from RAM test failure to drive the speaker correctly rather than just driving the output.
==================
== Version 5.01 ==
==================
6 May 2021
- Added maths functions
=======================
== Version 4.16/5.00 ==
=======================
29 March 2021
- Added SPx Cmd4 command 0 to Touch-Screen speaker code to enable the frequency to be changed. (Not working, removed)
- Re-organised HMI build options so the different versions are in alphabetical order (other than the default).
- System Firmware for 32-Bit: Changed 256-instruction limit to be 1024 instructions, as the 32-bit code is about 10 times faster than the 8-bit code where this limitation was introduced.
- (System LCD Driver) Corrected order of returned values from GetCurYX poll so that the correct Y value would be returned. For some reason, the compiler swaps bytes 2 and 0 of the assignment.
- (System LCD Driver) Corrected semaphore access timing in nLCD_cDoUpdate to allow for the case when new characters are buffered while the update is already running.
- (System) Implemented signed version of byte-sized display routines (OBLCD_SDecDispMFW, OBLCD_SDecDispMVW, OBLCD_SDecDispXFW and OBLCD_SDecDispXVW)
- (System) Modified SPxPoll2 4,'C000 (Write to buffer location) to update the output immediately if it is changed.
- SPLat/OS: Modified LCD driver code to minimise the chance of multiple threads writing to the LCD at the same time.
- (System) Added code to implement OBLCD_GetCurYX
- (System) SetCursor or SetCursorYX now outputs the new position to the display immediately if the cursor is on.
- (System) Added framework code behind the SPiceX calls: SPiceConfigU, SPxTxfrU and SPxMode.
- (System) Added SPxCmd2 command to write a byte to a specified LCD buffer location. Command format is SPxCmd2 2,address with U[0]=offset and U[1]=byte.
- (System) Added SPxPoll1 function to LCD VM so it could: - Read a character from the LCD buffer at a nominated position; - Read the current brightness (also available via the CPU).
- (System) Increased U part of UV register array from 21 bytes to 251.
- System: Added new allowable baud rate value of 15626 (offset 13), specifically for the RFID device.
- Changed code behind FloatMem16S to ensure negative numbers get converted correctly.
- Created 1788-based version that compiles to hmi700b.srec
==================
== Version 4.15 ==
==================
22 August 2019
- Re-built with all system changes (but not released as such)
-- adjusted the character LCD driver to give the new LCD modules a 200ms power on delay before initialising. The old driver expected the LCDs to be ready within 30ms, but the new datasheet says to wait at least 40ms.
-- OS: ANALOGUE_OUTPUT now includes an INVERTPWM parameter, so fAnOut 0.0 means maximum.
-- VM: added support for OBLCD_HGraph, OBLCD_CursorOff, OBLCD_CursorOn, OBLCD_CursorBlink. These also work over Xwire, both as master and as slave.
-- VM: suspend and resume were using little endian rather than big endian, never caused a problem, only a train spotter would notice.
-- TouchScreen: sped up screenshot capture, now now complex screens with lots of alphablending are quick enough to avoid a windows timeout.
-- VM: UVtoNV wasn't working right as it was ignoring the "offset", so now modified for use in ARM meaning V must be explicitly set, it won't use NVRecLen to allow for a more flexible instruction.
-- VM: added generic module for driving outputs as either analogue or digital
-- VM: If the first output in a call to OutputM didn't exist the controller would correctly reset but incorrectly not report the error to SPLat/PC.
-- Added PWM resynchronise function
-- Added SPxPoll1 function to LCD VM so it could:
--- Read a character from the LCD buffer at a nominated position;
--- Read the current brightness (also available via the CPU).
-- Also added macro paste commands to the utilities.
-- Added SPxCmd2 command to write a byte to a specified LCD buffer location. Command format is SPxCmd2 2,address with U[0]=offset and U[1]=byte.
-- Utils: Added 32-bit version of bit reversal code just to complete the set. (There was a gap between 16 and 64 bits.)
-- System Clarification: Changed OBCA Read command names to indicate Poll4 instead of the incorrect Poll1.
==================
== Version 4.14 ==
==================
07 Jun 2018
- VM: comms profile 5 was 8bits, odd_parity, 2stop but should have been no_parity as per MODBUS standards
- HMI: a rare event of an interrupt occuring during fetch of the device ID would cause a controller reset, the tell tale sign being ROM being filled with 0xAAAAAAAA; flash prefetch timing has been sped up a little.
- Created HMI LCD cal app for end user use.
- VM: floatFromU was not working correctly for negative numbers.
- VM: OBLCD_Dim may now be used without throwing an error on boards that only support a virtual LCD, it is simply ignored.
- VM: A race condition existed in the QuadratureCounter that could cause wrong readings to be returned, often this was seen when moving backwards with the count being returned as a large positive number rather than a small negative number. Thanks to Michael B for spotting this.
- VM: ARM controllers now support UVtoNV for NVEM page 1 and up.
- VM: ARM based OBQC_fGet used to return 0 thru 16777215, but this meant moving backward from 0 would cause a jump to 16777215. So now it returns negative, which is the same as 8bit SPLat controllers.
- VM: YieldTask may now be called in single tasking mode without throwing en error. This is especially useful in subroutines which may be shared by both single and multi-tasking applications.
- HMI: support for even and odd parity in user coms has been added
- VM: stop I/O messages during app upload
- HMI: continually calling "On" for the beeper made it sound funny (for controllers with a speaker).
- HMI: added NVEM3 which is 20 bytes of RTC RAM. There's no limit to the number of writes, but requires a battery otherwise the contents is lost at power off.
- VM: Oh dear, RTCDateToUV, RTCDMToUV, RTCHHMMToUV, RTCHHMMSSToUV were all incorrectly using the _current_time_ rather than the values in the RTC registers. So functions like OBLCD_HHMMSS were displaying the current time rather than the time in the RTC registers.
- VM: the delay between a slave receiving and replying was to quick causing legacy controllers to miss the response, increased to around 500us.
- VM: Fixed InputOM that was returning wildly incorrect values.
- HMI: if a button is created but has no EV callback, it's deletion was incomplete (some flags like "disabled" were not erased), so the next button to be created would incorrectly inherit these flags.
- HMI: hidden buttons now won't cause a screen redraw when they're created or any parameters are changed.
==================
== Version 4.13 ==
==================
30 Jun 2017
- HMI700: Oops, V4.12 broke the touch sensing.
==================
== Version 4.12 ==
==================
28 Jun 2017
- HMI, fixed: some boards built in 2017 show the "warmboot" error message at power on, seems to be a CPU batch problem.
- Xwire: the Xwire slave thread could run out of stack and cause a reset
- ARM: fixed a reset that could occur if Xwire Slave was restarted when it & MODBUS Slave were operating simultaneously.
- HMI: DrawImage was incorrectly offsetting the top left coordinate whenever the centre coordinates (ox & oy) were specified.
- ARM: WarmBoot now doesn't cause an error, it just restarts the VM. This is the same behaviour as the 8bit controllers.
- HMI: sequential LF or CR were being ignored instead of created a new line for each instance (only since UTF8 support).
- HMI: now supports up to 95 characters in buttons (was 31).
- HMI: if the second or subsequent line of text is wider than the button, it wasn't being displayed.
- arabic glyph conversion working
- SimpleHMI now supports UTF8
- Frequently at the end of a drag'n drop firmware update the controller would freeze and fail to reboot.
==================
== Version 4.11 ==
==================
28 Mar 2017
- HMI: fixed OBCA which broke when support for the speaker was added in HMI430 V4.16 & HMI700 V4.9. Was only a problem on HMI430_1608+ & HMI700_1610+ controllers.
- HMI: SetBacklight was unable to handle times that are floats, so a time like "15.0" was causing parsing problems.
- ARM: SEXI was incorrectly calculating the output size limit, so a value of 37 outputs which is legal was throwing a "too big" error.
- VM: SPx callbacks modified to receive the registered address, this allow multiple instances to exist.
- VM: floatFromU and fixToU were corrected to treat W as big endian when transferring between U
- VM: Custom analogue outputs are now "reset" via the fvAOutReset callback rather than outputting 0 to all outputs. This allows a custom handler to do something funky if it needs to.
- VM: sometimes a controller running MODBUS would reset when SPLat/PC connected due to an incorrect method of mutex release when closing the MODBUS port.
- ARM: a 16bit and 24bit ID is now available on all ARM boards. These are a CRC of a bigger ID so there's a small chance two controllers may have the same ID (chance is obviously less with the 24bit version).
==================
== Version 4.10 ==
==================
08 Dec 2016
- HMI: A recent mod to handle problems reading from external EEPROM at power on broke the ability to update the filesystem when new a firmware update is done.
- ARM: created common function for fetching device ID; STM32F4 devices will now report a different USB serial number, hence their COM port assigned by windows will change.
- HMI: HMI430/700 now supports up to simultaneous 80 buttons (was 50).
- Difmake: v0.2; added .exe to version control
- HMI: fixed RTC cal in production test which broke because the new speaker uses the same timer.
=================
== Version 4.9 ==
=================
15 Nov 2016
- ARM: volatile in typedef was placing constants in the .data segment, moved volatile keyword to variables themselves.
- HMI: the HMI will now try to load the file system 3 times if it is corrupt. After this it will not erase it and a font of last resort will be used so at least some text will appear on screen.
- HMI: If an image is now drawn with the background colour set to NOTHING ('00010101), then no background colour or background image will be drawn. This allows an image to be overlaid a solid setbounds colour.
- SPLatVM: MemToUV and UVToMem were ignoring the u[n] offset and always starting from u[0].
- HMI: prod test now disables the crosshairs after confirming touch is ok
=================
== Version 4.8 ==
=================
12 Sep 2016
- VM: fixed a serious bug in fSTTimeSince & STTest that 2 days after the controller is turned on made both functions think the elapsed time is always greater than 167772.16s.
=================
== Version 4.7 ==
=================
01 Sep 2016
- HMI700: production test now only requires one analogue test plug and automatically tests Analogue Out.
- ARM: The SPLat/VM on ARM boards was throwing a RAM OutOfBounds error when trying to access byte 250 which is actually the legal last address.
- HMI: the backlight can now be completely turned off without a timeout, eg #HMI SetBacklight( h:0, md:0, od:0 )
- HMI: fixed occasional USB lock-up that would cause the whole controller to freeze when a PC is connected
=================
== Version 4.6 ==
=================
27 Jul 2016
- HMI: under rare conditions, USB can sometimes fail to realise an endpoint causing a lock-up.
- HMI: OBCA in frequency mode would sometimes return either 0 or double the actual frequency.
- HMI430/700: Added "w" to the ButtonEvent2 mode to allow the button repeat wait time to be set; simple HMI modes "T", "B" and "M" may now take an optional parameter (so they can be turned off).
- HMI430/700: Dragging a b1n file into System Firmware folder will now update the SPLat app without causing an intentional reset.
- HMI700: sadly 3.3V calibration wasn't being saved correctly, so voltage and current analogue input measurements will all be wrong.
- VM: WtoU, QtoU, UtoW, UtoQ, fixToU, floatFromU, would incorrectly error when loading a float into U[16+]
=================
== Version 4.5 ==
=================
09 May 2016
- VM: WaitOnKT wasn't working (incorrect opcode length)
- HMI: OBLCD text can now be displayed on the HMI, including that received when the HMI is a Xwire slave via:
iiPrintText COMHMI,'1,"g",'3
The current font, colours and bounds will be applied. Each call updates the display once, so it should be done in a loop usually with a Pause.
- HMI: following HMI Reset(), now avoid scanning for button presses until the screen has first been released.
=================
== Version 4.4 ==
=================
27 Apr 2016
- HMI: Added support for OBCA on input 7
- VM: GoIfInOn/Off/K were ignoring "J"
- VM: Fixed STTest which was not working correctly due to a typo. It was especially worse with small delays.
- VM: NVReadRec & NVWriteRec were incorrectly expecting a 16 bit address but it's only an 8 bit address.
- VM: A change to detect duplicated slave entries in the Xwire table was preventing correct parsing of the table, meaning slaves often weren't being added to the I/O map.
- OS: Saw the 1 second timer getting delayed, manifested by ComTestStartTimer taking 13 seconds rather than 10. Due to timers being deleted before the next timer was fetched.
- VM: ComTestStartTimer now using fast tick to avoid expiring after 9 - 10 seconds (only following RUN from SPLat/PC, power on was always 10s).
- VM: XwireGetPollCntr now increments as soon as a packet is received rather than at the start of sending the response, this also fixed a problem where poll count was not incrementing if the slave had no data to return; interpacket time delays have been shortend to increase throughput.
- HMI: Added NVEM2, 64kB of volatile RAM storage.
- VM: Fixed display of PermStore values in the "Module" window in SPLat/PC as all bytes were off by 1, thus the first byte was always missing and the "status" was never correct.
- VM: the Xwire LCD master now sends zeroes for the command bytes (blink, etc) otherwise sending these bytes sent garbage and stuffed up the LCD.
- HMI: Fixed reporting of backlight level as it was always 0.0 but is now the actual level. Ref ui_utils.spt UIsubBacklightEvent.
=================
== Version 4.3 ==
=================
08 Feb 2016
- HMI: version 4.2 broke firmware and .b1n updates. This is bad. We have tarred and feathered the staffer responsible. If your HMI has V4.2 and you'd like to update, please contact SPLat for help.
=================
== Version 4.2 ==
=================
03 Jan 2016
- ** This release is focused on fixes to the USB filesystem. **
- HMI: screen shot image file now renames with each shot, so it starts with sshot000.png and after dragging it to the PC, becomes sshot001.png ready for the next one.
- HMI: windows would refuse to delete a file that has just been copied to the HMI unless the USB cable was unplugged and reconnected.
- HMI: PNGs with a 8bit colour palette are now supported.
- HMI: screenshot colours are now stronger. As an example, pure white ('FFFFFF) on the HMI is now pure white in the generated PNG rather than a cream colour.
- HMI: fixed file upload where dragged files would not appear in windows explorer because they had a duplicate ID; tweaked used space to include padding.
- HMI: if a screen had a background image and a full width partial height bounds was set, then #HMI Cls() would end up erasing the whole screen.
- VM: low speed digital (OBCB) counting now works on ARM controllers.
- SPLatVM: SEXI was not turning off blinking outputs when SPLat/PC connected
=================
== Version 4.1 ==
=================
13 Nov 2015
- First production release.
2. Drag and Drop
No special program is required to update the firmware.
In the description below, replace “HMI430” with “HMI430B”, “HMI700” or “HMI700B” as appropriate.
The “B” variants are the same as the non-B variants, but run on a lower-spec processor due to the global parts shortage. They cannot run the same software.
- Open the HMI “System Firmware” folder that is in Computer | HMI430 | System Firmware.

- Extract the “hmi430.srec” file from the zip file you downloaded and drag it into the “System Firmware” drive.
- Wait about 60 seconds for the update to complete.
If you’re not sure what you want, give us a call: +61 3 9773 5082