BeagleBone Black with a I2C Digital Analog Converter

Dr. Rolf Jansen rj at obsigna.com
Sun Aug 12 04:46:49 UTC 2018



> Am 12.08.2018 um 01:01 schrieb Dr. Rolf Jansen <rj at obsigna.com>:
> 
>> Am 11.08.2018 um 17:42 schrieb Ian Lepore <ian at freebsd.org>:
>> 
>> On Sat, 2018-08-11 at 17:30 -0300, Dr. Rolf Jansen wrote:
>>>> 
>>>> ...
>>>> , anyway I am
>>>> stuck at this point.
>>> 
>>> I got it working.
>>> 
>>> 1.) The specification of the DAC board which I attached to my BBB was
>>> wrong in regards to the acceptable Vcc voltage range (2.7 to 5.5 V).
>>> ... 
>>> 
>>> 2. There is still something wrong with my overlay. I need to hack in
>>> the same I2C1 changes into the main DT, and then the bus scan by i2c
>>> -f  /dev/iic1 -s gives me the expected output. For my present project
>>> this is a minor issue, though. My best guess here is, that there is a
>>> problem with the reference of the I2C1 node to the proposed pinmux
>>> node.
>>> 
>>> On Debian/Linux the very overlay does work.
>>> 
>> 
>> Ah.  The board probably does support 2.7-5.5v, but if the i2c bus has
>> pullups that only pull the lines up to 3.3v, that may be too close to
>> the VIH transition levels for the DAC chip running at 5v. Even if it's
>> within the VIH range, if the pulls aren't strong enough the clock
>> signal may not rise above the 5v VIH fast enough for reliable comms.
> 
> I was too happy too soon.
> 
> Now, I updated my system to the 12 snapshot from yesterday, which turned it from 12-CURRENT to 12-ALPHA1, and with that one, the issue number 2 above turned from a minor issue to a major problem, in order not to say a whole new barrier is now blocking all my further efforts. It seems that in 12-ALPHA1 the DTB is statically compiled into the kernel, and now I cannot simply hack-in anymore some nodes which don't work by the way of overlays
> 
> OK, in the moment I may switch back to 12-CURRENT, however, I am elaborating this project with 12 now, so I won't have any headaches in the future. Now I am stuck again. Please may I ask for an advice?
> 
> May I expect that pinmuxing will work in a not too distant future with overlays?

I found the problem with my overlay. I needed to add a __local_fixups__ section, and with that in place, it is working on FreeBSD 12-ALPHA1. I am sorry for the false alert. For future reference, here comes the source for my working I2C1 overlay:

/dts-v1/;
/plugin/;

/ {
	compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";

	part-number = "I2C1";
	version = "0001";
	exclusive-use = "P9.17","P9.18","i2c1";

	fragment at 0 {
		target = <&am33xx_pinmux>;
		__overlay__ {
			i2c1_pins: pinmux_i2c1_pins {
				pinctrl-single,pins = <0x158 0x32 0x15c 0x32>;
			};
		};
	};

	fragment at 1 {
		target = <&i2c1>;
		__overlay__ {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c1_pins>;
			clock-frequency = <400000>;
			#address-cells = <0x1>;
			#size-cells = <0x0>;
		};
	};

	__local_fixups__ {
		fragment at 1 {
			__overlay__ {
				pinctrl-0 = <0x0>;
			};
		};
	};
};

Best regards

Rolf



More information about the freebsd-arm mailing list