ch341a_software_and_drivers/Tools/AsProgrammer/scripts/i2c_example.pas

60 lines
1.1 KiB
Plaintext

{$read}
//reading 24c08
begin
ChipSize := 1024;
MemAddr := 0;
ReadBuff := CreateByteArray(ChipSize);
DevAddr := $A8;
if _IC_Name = '' then
begin
ShowMessage ('Choose a component in list');
exit;
end;
I2CEnterProgMode;
I2CReadWrite(DevAddr, 1, ChipSize, MemAddr, ReadBuff);
ReadToEditor(ChipSize, 0, ReadBuff);
I2CExitProgMode;
end
{$write}
function I2CIsBusy(DevAdr): boolean;
begin
I2CStart;
Result := not I2CWriteByte(DevAdr);
I2CStop;
end;
//writing 24c08
begin
ChipSize := 1024;
MemAddr := 0;
WriteByte := 0;
DevAddr := $A0;
if _IC_Name = '' then
begin
ShowMessage ('Choose a component in list');
exit;
end;
ProgressBar(0, _IC_SIZE-1, 0);
I2CEnterProgMode;
for i:=0 to ChipSize-1 do
begin
WriteFromEditor(1, i, WriteByte);
I2CReadWrite(DevAddr, 2, 0, MemAddr, WriteByte);
while I2CIsBusy(DevAddr) do
MemAddr := MemAddr + 1;
if MemAddr = 256 then DevAddr := $A2;
if MemAddr = 512 then DevAddr := $A4;
if MemAddr = 768 then DevAddr := $A6;
ProgressBar(1);
end;
I2CExitProgMode;
ProgressBar(0, 0, 0);
end