Unexpected problem fitting a digital output pin

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
JoKe_1629696
Level 1
Level 1

I'm using Creator 4.2 to make a test project for the CYBLE-416045-02, and the fitter is unable to place a digital output pin.  The only thing unusual I did was turn on the output enable (the pin is the Tx for a multi-drop serial bus).

Here is the error I'm getting:

Error: fit.M0059: FFB and IO placement failed: Failed to find a valid placement for MODBUS_Tx(0). (App=cydsfit)

There are not too many pins assigned on this project:

Exhibit_A.png

Here's what the UART and pin look like:

Exhibit_B.png

I've attached the exported project.  If anybody has any idea why this doesn't work, I'd sure appreciate knowing.  Is there a way to get verbose output from the fitter, maybe?

0 Likes
1 Solution
wcc3
Level 4
Level 4
10 likes received 10 replies posted 5 replies posted

If I'm reading the reference manual right, the only time you are going to be able to use the output enable function on the I/O pin component is when the pin is in GPIO mode.

pastedImage_0.png

That would be if you connected the pin to nothing, a control register, UDB logic, or the like.

Once you connect that pin to the UART output, the UART is going to take over the OUT_EN function, presumably setting it always true.

The tx_en_out pin on the UART component is intended for routing to a separate pin to control the driver enable of an external transceiver chip.

But this begs the question of why you need an output enable at all.

You are running an open-collector bus.  UARTs idle with the output high.  In your case, that means open.  If you delete the tx_en_out pin from the UART and uncheck the output enable function on the I/O pin, I believe that you get what you need.  The pin stays open except when the UART is transmitting start bits or zero bits.

Enjoy!

Will

View solution in original post

0 Likes
2 Replies
wcc3
Level 4
Level 4
10 likes received 10 replies posted 5 replies posted

If I'm reading the reference manual right, the only time you are going to be able to use the output enable function on the I/O pin component is when the pin is in GPIO mode.

pastedImage_0.png

That would be if you connected the pin to nothing, a control register, UDB logic, or the like.

Once you connect that pin to the UART output, the UART is going to take over the OUT_EN function, presumably setting it always true.

The tx_en_out pin on the UART component is intended for routing to a separate pin to control the driver enable of an external transceiver chip.

But this begs the question of why you need an output enable at all.

You are running an open-collector bus.  UARTs idle with the output high.  In your case, that means open.  If you delete the tx_en_out pin from the UART and uncheck the output enable function on the I/O pin, I believe that you get what you need.  The pin stays open except when the UART is transmitting start bits or zero bits.

Enjoy!

Will

0 Likes

Many thanks, @WiCo_1641241!  I still don't entirely understand table 21-3, but I take you point that I don't need to.  If my bus is open-collector (==open-drain), I just need an "open drain, drives low" transmit pin and it should all work.

If anybody is reading this thread in the future, note that the default UART transmit pin is "strong drive", so you do have to use the Show UART Terminals feature to get an "open drain, drives low" pin.

Exhibit_C.png

Joe

0 Likes