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